All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/staging/wimax/i2400m/control.c:1224 i2400m_set_init_config() warn: is 'buf' large enough for 'struct 0
@ 2021-03-07  3:54 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-03-07  3:54 UTC (permalink / raw)
  To: kbuild

[-- 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 --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-03-07  3:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-07  3:54 drivers/staging/wimax/i2400m/control.c:1224 i2400m_set_init_config() warn: is 'buf' large enough for 'struct 0 kernel test robot

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.