[linux-next:master 2302/3381] drivers/input/touchscreen/wacom_w8001.c:637:29: warning: ' Pen' directive output may be truncated writing 4 bytes into a region of size between 1 and 64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   d97496ca23a2d4ee80b7302849404859d9058bcd
commit: 6c7cc1a29d1e679be4a98b01141f1ba491e5775e [2302/3381] Input: wacom_w8001 - simplify device name generation
config: microblaze-randconfig-r006-20230312 (https://download.01.org/0day-ci/archive/20240604/202406041641.wE3cCT4C-lkp@xxxxxxxxx/config)
compiler: microblaze-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240604/202406041641.wE3cCT4C-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406041641.wE3cCT4C-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

   drivers/input/touchscreen/wacom_w8001.c: In function 'w8001_connect':
>> drivers/input/touchscreen/wacom_w8001.c:637:29: warning: ' Pen' directive output may be truncated writing 4 bytes into a region of size between 1 and 64 [-Wformat-truncation=]
     637 |                          "%s Pen", basename);
         |                             ^~~~
   drivers/input/touchscreen/wacom_w8001.c:636:17: note: 'snprintf' output between 5 and 68 bytes into a destination of size 64
     636 |                 snprintf(w8001->pen_name, sizeof(w8001->pen_name),
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     637 |                          "%s Pen", basename);
         |                          ~~~~~~~~~~~~~~~~~~~
>> drivers/input/touchscreen/wacom_w8001.c:653:29: warning: ' Finger' directive output may be truncated writing 7 bytes into a region of size between 1 and 64 [-Wformat-truncation=]
     653 |                          "%s Finger", basename);
         |                             ^~~~~~~
   drivers/input/touchscreen/wacom_w8001.c:652:17: note: 'snprintf' output between 8 and 71 bytes into a destination of size 64
     652 |                 snprintf(w8001->pen_name, sizeof(w8001->pen_name),
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     653 |                          "%s Finger", basename);
         |                          ~~~~~~~~~~~~~~~~~~~~~~


vim +637 drivers/input/touchscreen/wacom_w8001.c

   586	
   587	/*
   588	 * w8001_connect() is the routine that is called when someone adds a
   589	 * new serio device that supports the w8001 protocol and registers it as
   590	 * an input device.
   591	 */
   592	
   593	static int w8001_connect(struct serio *serio, struct serio_driver *drv)
   594	{
   595		struct w8001 *w8001;
   596		struct input_dev *input_dev_pen;
   597		struct input_dev *input_dev_touch;
   598		char basename[64] = "Wacom Serial";
   599		int err, err_pen, err_touch;
   600	
   601		w8001 = kzalloc(sizeof(struct w8001), GFP_KERNEL);
   602		input_dev_pen = input_allocate_device();
   603		input_dev_touch = input_allocate_device();
   604		if (!w8001 || !input_dev_pen || !input_dev_touch) {
   605			err = -ENOMEM;
   606			goto fail1;
   607		}
   608	
   609		w8001->serio = serio;
   610		w8001->pen_dev = input_dev_pen;
   611		w8001->touch_dev = input_dev_touch;
   612		mutex_init(&w8001->mutex);
   613		init_completion(&w8001->cmd_done);
   614		snprintf(w8001->phys, sizeof(w8001->phys), "%s/input0", serio->phys);
   615	
   616		serio_set_drvdata(serio, w8001);
   617		err = serio_open(serio, drv);
   618		if (err)
   619			goto fail2;
   620	
   621		err = w8001_detect(w8001);
   622		if (err)
   623			goto fail3;
   624	
   625		/* For backwards-compatibility we compose the basename based on
   626		 * capabilities and then just append the tool type
   627		 */
   628		err_pen = w8001_setup_pen(w8001, basename, sizeof(basename));
   629		err_touch = w8001_setup_touch(w8001, basename, sizeof(basename));
   630		if (err_pen && err_touch) {
   631			err = -ENXIO;
   632			goto fail3;
   633		}
   634	
   635		if (!err_pen) {
   636			snprintf(w8001->pen_name, sizeof(w8001->pen_name),
 > 637				 "%s Pen", basename);
   638			input_dev_pen->name = w8001->pen_name;
   639	
   640			w8001_set_devdata(input_dev_pen, w8001, serio);
   641	
   642			err = input_register_device(w8001->pen_dev);
   643			if (err)
   644				goto fail3;
   645		} else {
   646			input_free_device(input_dev_pen);
   647			input_dev_pen = NULL;
   648			w8001->pen_dev = NULL;
   649		}
   650	
   651		if (!err_touch) {
   652			snprintf(w8001->pen_name, sizeof(w8001->pen_name),
 > 653				 "%s Finger", basename);
   654			input_dev_touch->name = w8001->touch_name;
   655	
   656			w8001_set_devdata(input_dev_touch, w8001, serio);
   657	
   658			err = input_register_device(w8001->touch_dev);
   659			if (err)
   660				goto fail4;
   661		} else {
   662			input_free_device(input_dev_touch);
   663			input_dev_touch = NULL;
   664			w8001->touch_dev = NULL;
   665		}
   666	
   667		return 0;
   668	
   669	fail4:
   670		if (w8001->pen_dev)
   671			input_unregister_device(w8001->pen_dev);
   672	fail3:
   673		serio_close(serio);
   674	fail2:
   675		serio_set_drvdata(serio, NULL);
   676	fail1:
   677		input_free_device(input_dev_pen);
   678		input_free_device(input_dev_touch);
   679		kfree(w8001);
   680		return err;
   681	}
   682	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux