All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/staging/wimax/i2400m/control.c:1224 i2400m_set_init_config() warn: is 'buf' large enough for 'struct 0
Date: Sun, 07 Mar 2021 11:54:21 +0800	[thread overview]
Message-ID: <202103071114.ojWMweSi-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 10762 bytes --]

CC: kbuild-all(a)01.org
CC: linux-kernel(a)vger.kernel.org
TO: Arnd Bergmann <arnd@arndb.de>

Hi Arnd,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a38fd8748464831584a19438cbb3082b5a2dab15
commit: f54ec58fee837ec847cb8b50593e81bfaa46107f wimax: move out to staging
date:   4 months ago
:::::: branch date: 26 hours ago
:::::: commit date: 4 months ago
config: i386-randconfig-m021-20210307 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/staging/wimax/i2400m/control.c:1224 i2400m_set_init_config() warn: is 'buf' large enough for 'struct i2400m_l3l4_hdr'? 0

vim +1224 drivers/staging/wimax/i2400m/control.c

3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1181  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1182  /**
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1183   * Set basic configuration settings
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1184   *
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1185   * @i2400m: device descriptor
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1186   * @args: array of pointers to the TLV headers to send for
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1187   *     configuration (each followed by its payload).
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1188   *     TLV headers and payloads must be properly initialized, with the
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1189   *     right endianess (LE).
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1190   * @arg_size: number of pointers in the @args array
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1191   */
e3d32687a624845 drivers/net/wimax/i2400m/control.c stephen hemminger    2010-10-04  1192  static int i2400m_set_init_config(struct i2400m *i2400m,
e3d32687a624845 drivers/net/wimax/i2400m/control.c stephen hemminger    2010-10-04  1193  				  const struct i2400m_tlv_hdr **arg,
e3d32687a624845 drivers/net/wimax/i2400m/control.c stephen hemminger    2010-10-04  1194  				  size_t args)
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1195  {
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1196  	int result;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1197  	struct device *dev = i2400m_dev(i2400m);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1198  	struct sk_buff *ack_skb;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1199  	struct i2400m_l3l4_hdr *cmd;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1200  	char strerr[32];
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1201  	unsigned argc, argsize, tlv_size;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1202  	const struct i2400m_tlv_hdr *tlv_hdr;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1203  	void *buf, *itr;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1204  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1205  	d_fnstart(3, dev, "(i2400m %p arg %p args %zu)\n", i2400m, arg, args);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1206  	result = 0;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1207  	if (args == 0)
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1208  		goto none;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1209  	/* Compute the size of all the TLVs, so we can alloc a
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1210  	 * contiguous command block to copy them. */
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1211  	argsize = 0;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1212  	for (argc = 0; argc < args; argc++) {
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1213  		tlv_hdr = arg[argc];
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1214  		argsize += sizeof(*tlv_hdr) + le16_to_cpu(tlv_hdr->length);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1215  	}
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1216  	WARN_ON(argc >= 9);	/* As per hw spec */
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1217  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1218  	/* Alloc the space for the command and TLVs*/
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1219  	result = -ENOMEM;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1220  	buf = kzalloc(sizeof(*cmd) + argsize, GFP_KERNEL);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1221  	if (buf == NULL)
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1222  		goto error_alloc;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1223  	cmd = buf;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20 @1224  	cmd->type = cpu_to_le16(I2400M_MT_SET_INIT_CONFIG);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1225  	cmd->length = cpu_to_le16(argsize);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1226  	cmd->version = cpu_to_le16(I2400M_L3L4_VERSION);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1227  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1228  	/* Copy the TLVs */
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1229  	itr = buf + sizeof(*cmd);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1230  	for (argc = 0; argc < args; argc++) {
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1231  		tlv_hdr = arg[argc];
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1232  		tlv_size = sizeof(*tlv_hdr) + le16_to_cpu(tlv_hdr->length);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1233  		memcpy(itr, tlv_hdr, tlv_size);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1234  		itr += tlv_size;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1235  	}
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1236  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1237  	/* Send the message! */
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1238  	ack_skb = i2400m_msg_to_dev(i2400m, buf, sizeof(*cmd) + argsize);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1239  	result = PTR_ERR(ack_skb);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1240  	if (IS_ERR(ack_skb)) {
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1241  		dev_err(dev, "Failed to issue 'init config' command: %d\n",
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1242  			result);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1243  
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1244  		goto error_msg_to_dev;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1245  	}
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1246  	result = i2400m_msg_check_status(wimax_msg_data(ack_skb),
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1247  					 strerr, sizeof(strerr));
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1248  	if (result < 0)
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1249  		dev_err(dev, "'init config' (0x%04x) command failed: %d - %s\n",
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1250  			I2400M_MT_SET_INIT_CONFIG, result, strerr);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1251  	kfree_skb(ack_skb);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1252  error_msg_to_dev:
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1253  	kfree(buf);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1254  error_alloc:
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1255  none:
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1256  	d_fnend(3, dev, "(i2400m %p arg %p args %zu) = %d\n",
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1257  		i2400m, arg, args, result);
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1258  	return result;
3a35a1d0bdf7cc3 drivers/net/wimax/i2400m/control.c Inaky Perez-Gonzalez 2008-12-20  1259  

:::::: The code@line 1224 was first introduced by commit
:::::: 3a35a1d0bdf7cc32cddc234b956605e6d4db4673 i2400m: various functions for device management

:::::: TO: Inaky Perez-Gonzalez <inaky@linux.intel.com>
:::::: CC: Greg Kroah-Hartman <gregkh@suse.de>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39068 bytes --]

                 reply	other threads:[~2021-03-07  3:54 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202103071114.ojWMweSi-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /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.