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.