All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff LaBundy <jeff@labundy.com>
To: kernel test robot <lkp@intel.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>
Subject: Re: drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2
Date: Thu, 26 Oct 2023 10:50:55 -0500	[thread overview]
Message-ID: <ZTqK37deBniFVnWT@nixie71> (raw)
In-Reply-To: <202310190041.28bxUK0W-lkp@intel.com>

Perhaps the list can let me know if I am missing anything...

On Thu, Oct 19, 2023 at 12:34:52AM +0800, kernel test robot wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   06dc10eae55b5ceabfef287a7e5f16ceea204aa0
> commit: 4d3d2694e168c542b088eef5059d31498f679020 Input: iqs626a - drop unused device node references
> date:   9 months ago
> config: x86_64-randconfig-r015-20230901 (https://download.01.org/0day-ci/archive/20231019/202310190041.28bxUK0W-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231019/202310190041.28bxUK0W-lkp@intel.com/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@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202310190041.28bxUK0W-lkp@intel.com/
> 
> All warnings (new ones prefixed by >>):
> 
>    drivers/input/misc/iqs626a.c: In function 'iqs626_parse_trackpad':
> >> drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2 [-Wformat-truncation=]
>      780 |                 snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
>          |                                                             ^~
>    drivers/input/misc/iqs626a.c:780:52: note: directive argument in the range [0, 2147483646]
>      780 |                 snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
>          |                                                    ^~~~~~~~~~~~
>    drivers/input/misc/iqs626a.c:780:17: note: 'snprintf' output between 10 and 19 bytes into a destination of size 10
>      780 |                 snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
>          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This cannot actually happen during runtime; 'i' is limited to at most 8. The
warning seems bogus.

> 
> 
> vim +780 drivers/input/misc/iqs626a.c
> 
>    712	
>    713	static int iqs626_parse_trackpad(struct iqs626_private *iqs626,
>    714					 struct fwnode_handle *ch_node,
>    715					 enum iqs626_ch_id ch_id)
>    716	{
>    717		struct iqs626_sys_reg *sys_reg = &iqs626->sys_reg;
>    718		struct i2c_client *client = iqs626->client;
>    719		u8 *hyst = &sys_reg->tp_grp_reg.hyst;
>    720		int error, count, i;
>    721		unsigned int val;
>    722	
>    723		if (!fwnode_property_read_u32(ch_node, "azoteq,lta-update", &val)) {
>    724			if (val > IQS626_MISC_A_TPx_LTA_UPDATE_MAX) {
>    725				dev_err(&client->dev,
>    726					"Invalid %s channel update rate: %u\n",
>    727					fwnode_get_name(ch_node), val);
>    728				return -EINVAL;
>    729			}
>    730	
>    731			sys_reg->misc_a &= ~IQS626_MISC_A_TPx_LTA_UPDATE_MASK;
>    732			sys_reg->misc_a |= (val << IQS626_MISC_A_TPx_LTA_UPDATE_SHIFT);
>    733		}
>    734	
>    735		if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-trackpad",
>    736					      &val)) {
>    737			if (val > IQS626_FILT_STR_MAX) {
>    738				dev_err(&client->dev,
>    739					"Invalid %s channel filter strength: %u\n",
>    740					fwnode_get_name(ch_node), val);
>    741				return -EINVAL;
>    742			}
>    743	
>    744			sys_reg->misc_b &= ~IQS626_MISC_B_FILT_STR_TPx;
>    745			sys_reg->misc_b |= val;
>    746		}
>    747	
>    748		if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-np-cnt",
>    749					      &val)) {
>    750			if (val > IQS626_FILT_STR_MAX) {
>    751				dev_err(&client->dev,
>    752					"Invalid %s channel filter strength: %u\n",
>    753					fwnode_get_name(ch_node), val);
>    754				return -EINVAL;
>    755			}
>    756	
>    757			*hyst &= ~IQS626_FILT_STR_NP_TPx_MASK;
>    758			*hyst |= (val << IQS626_FILT_STR_NP_TPx_SHIFT);
>    759		}
>    760	
>    761		if (!fwnode_property_read_u32(ch_node, "azoteq,filt-str-lp-cnt",
>    762					      &val)) {
>    763			if (val > IQS626_FILT_STR_MAX) {
>    764				dev_err(&client->dev,
>    765					"Invalid %s channel filter strength: %u\n",
>    766					fwnode_get_name(ch_node), val);
>    767				return -EINVAL;
>    768			}
>    769	
>    770			*hyst &= ~IQS626_FILT_STR_LP_TPx_MASK;
>    771			*hyst |= (val << IQS626_FILT_STR_LP_TPx_SHIFT);
>    772		}
>    773	
>    774		for (i = 0; i < iqs626_channels[ch_id].num_ch; i++) {
>    775			u8 *ati_base = &sys_reg->tp_grp_reg.ch_reg_tp[i].ati_base;
>    776			u8 *thresh = &sys_reg->tp_grp_reg.ch_reg_tp[i].thresh;
>    777			struct fwnode_handle *tc_node;
>    778			char tc_name[10];
>    779	
>  > 780			snprintf(tc_name, sizeof(tc_name), "channel-%d", i);
>    781	
>    782			tc_node = fwnode_get_named_child_node(ch_node, tc_name);
>    783			if (!tc_node)
>    784				continue;
>    785	
>    786			if (!fwnode_property_read_u32(tc_node, "azoteq,ati-base",
>    787						      &val)) {
>    788				if (val < IQS626_TPx_ATI_BASE_MIN ||
>    789				    val > IQS626_TPx_ATI_BASE_MAX) {
>    790					dev_err(&client->dev,
>    791						"Invalid %s %s ATI base: %u\n",
>    792						fwnode_get_name(ch_node), tc_name, val);
>    793					fwnode_handle_put(tc_node);
>    794					return -EINVAL;
>    795				}
>    796	
>    797				*ati_base = val - IQS626_TPx_ATI_BASE_MIN;
>    798			}
>    799	
>    800			if (!fwnode_property_read_u32(tc_node, "azoteq,thresh",
>    801						      &val)) {
>    802				if (val > IQS626_CHx_THRESH_MAX) {
>    803					dev_err(&client->dev,
>    804						"Invalid %s %s threshold: %u\n",
>    805						fwnode_get_name(ch_node), tc_name, val);
>    806					fwnode_handle_put(tc_node);
>    807					return -EINVAL;
>    808				}
>    809	
>    810				*thresh = val;
>    811			}
>    812	
>    813			fwnode_handle_put(tc_node);
>    814		}
>    815	
>    816		if (!fwnode_property_present(ch_node, "linux,keycodes"))
>    817			return 0;
>    818	
>    819		count = fwnode_property_count_u32(ch_node, "linux,keycodes");
>    820		if (count > IQS626_NUM_GESTURES) {
>    821			dev_err(&client->dev, "Too many keycodes present\n");
>    822			return -EINVAL;
>    823		} else if (count < 0) {
>    824			dev_err(&client->dev, "Failed to count keycodes: %d\n", count);
>    825			return count;
>    826		}
>    827	
>    828		error = fwnode_property_read_u32_array(ch_node, "linux,keycodes",
>    829						       iqs626->tp_code, count);
>    830		if (error) {
>    831			dev_err(&client->dev, "Failed to read keycodes: %d\n", error);
>    832			return error;
>    833		}
>    834	
>    835		sys_reg->misc_b &= ~IQS626_MISC_B_TPx_SWIPE;
>    836		if (fwnode_property_present(ch_node, "azoteq,gesture-swipe"))
>    837			sys_reg->misc_b |= IQS626_MISC_B_TPx_SWIPE;
>    838	
>    839		if (!fwnode_property_read_u32(ch_node, "azoteq,timeout-tap-ms",
>    840					      &val)) {
>    841			if (val > IQS626_TIMEOUT_TAP_MS_MAX) {
>    842				dev_err(&client->dev,
>    843					"Invalid %s channel timeout: %u\n",
>    844					fwnode_get_name(ch_node), val);
>    845				return -EINVAL;
>    846			}
>    847	
>    848			sys_reg->timeout_tap = val / 16;
>    849		}
>    850	
>    851		if (!fwnode_property_read_u32(ch_node, "azoteq,timeout-swipe-ms",
>    852					      &val)) {
>    853			if (val > IQS626_TIMEOUT_SWIPE_MS_MAX) {
>    854				dev_err(&client->dev,
>    855					"Invalid %s channel timeout: %u\n",
>    856					fwnode_get_name(ch_node), val);
>    857				return -EINVAL;
>    858			}
>    859	
>    860			sys_reg->timeout_swipe = val / 16;
>    861		}
>    862	
>    863		if (!fwnode_property_read_u32(ch_node, "azoteq,thresh-swipe",
>    864					      &val)) {
>    865			if (val > IQS626_THRESH_SWIPE_MAX) {
>    866				dev_err(&client->dev,
>    867					"Invalid %s channel threshold: %u\n",
>    868					fwnode_get_name(ch_node), val);
>    869				return -EINVAL;
>    870			}
>    871	
>    872			sys_reg->thresh_swipe = val;
>    873		}
>    874	
>    875		sys_reg->event_mask &= ~IQS626_EVENT_MASK_GESTURE;
>    876	
>    877		return 0;
>    878	}
>    879	
> 
> -- 
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki

Kind regards,
Jeff LaBundy

  reply	other threads:[~2023-10-26 15:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-18 16:34 drivers/input/misc/iqs626a.c:780:61: warning: '%d' directive output may be truncated writing between 1 and 10 bytes into a region of size 2 kernel test robot
2023-10-26 15:50 ` Jeff LaBundy [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-12-04 21:44 kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZTqK37deBniFVnWT@nixie71 \
    --to=jeff@labundy.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.