* drivers/hid/hid-hyperv.c:218:9: sparse: sparse: cast from restricted __le16
@ 2022-06-05 23:45 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-06-05 23:45 UTC (permalink / raw)
To: Kees Cook; +Cc: kbuild-all, linux-kernel
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d717180e7f9775d468f415c10a4a474640146001
commit: f68f2ff91512c199ec24883001245912afc17873 fortify: Detect struct member overflows in memcpy() at compile-time
date: 4 months ago
config: i386-allmodconfig (https://download.01.org/0day-ci/archive/20220606/202206060703.BhX0IBxu-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-18-g56afb504-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f68f2ff91512c199ec24883001245912afc17873
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f68f2ff91512c199ec24883001245912afc17873
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=i386 SHELL=/bin/bash drivers/hid/ samples/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/hid/hid-hyperv.c:202:40: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [usertype] report_desc_size @@ got restricted __le16 [usertype] wDescriptorLength @@
drivers/hid/hid-hyperv.c:202:40: sparse: expected unsigned int [usertype] report_desc_size
drivers/hid/hid-hyperv.c:202:40: sparse: got restricted __le16 [usertype] wDescriptorLength
>> drivers/hid/hid-hyperv.c:218:9: sparse: sparse: cast from restricted __le16
vim +218 drivers/hid/hid-hyperv.c
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 180
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 181 static void mousevsc_on_receive_device_info(struct mousevsc_dev *input_device,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 182 struct synthhid_device_info *device_info)
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 183 {
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 184 int ret = 0;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 185 struct hid_descriptor *desc;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 186 struct mousevsc_prt_msg ack;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 187
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 188 input_device->dev_info_status = -ENOMEM;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 189
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 190 input_device->hid_dev_info = device_info->hid_dev_info;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 191 desc = &device_info->hid_descriptor;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 192 if (desc->bLength == 0)
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 193 goto cleanup;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 194
af13f9ed6f9aa6 Dexuan Cui 2019-11-19 195 /* The pointer is not NULL when we resume from hibernation */
af13f9ed6f9aa6 Dexuan Cui 2019-11-19 196 kfree(input_device->hid_desc);
a4a23f6d68ad2c Thomas Meyer 2013-06-01 197 input_device->hid_desc = kmemdup(desc, desc->bLength, GFP_ATOMIC);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 198
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 199 if (!input_device->hid_desc)
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 200 goto cleanup;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 201
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 @202 input_device->report_desc_size = desc->desc[0].wDescriptorLength;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 203 if (input_device->report_desc_size == 0) {
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 204 input_device->dev_info_status = -EINVAL;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 205 goto cleanup;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 206 }
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 207
af13f9ed6f9aa6 Dexuan Cui 2019-11-19 208 /* The pointer is not NULL when we resume from hibernation */
af13f9ed6f9aa6 Dexuan Cui 2019-11-19 209 kfree(input_device->report_desc);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 210 input_device->report_desc = kzalloc(input_device->report_desc_size,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 211 GFP_ATOMIC);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 212
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 213 if (!input_device->report_desc) {
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 214 input_device->dev_info_status = -ENOMEM;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 215 goto cleanup;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 216 }
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 217
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 @218 memcpy(input_device->report_desc,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 219 ((unsigned char *)desc) + desc->bLength,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 220 desc->desc[0].wDescriptorLength);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 221
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 222 /* Send the ack */
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 223 memset(&ack, 0, sizeof(struct mousevsc_prt_msg));
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 224
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 225 ack.type = PIPE_MESSAGE_DATA;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 226 ack.size = sizeof(struct synthhid_device_info_ack);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 227
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 228 ack.ack.header.type = SYNTH_HID_INITIAL_DEVICE_INFO_ACK;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 229 ack.ack.header.size = 1;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 230 ack.ack.reserved = 0;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 231
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 232 ret = vmbus_sendpacket(input_device->device->channel,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 233 &ack,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 234 sizeof(struct pipe_prt_msg) - sizeof(unsigned char) +
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 235 sizeof(struct synthhid_device_info_ack),
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 236 (unsigned long)&ack,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 237 VM_PKT_DATA_INBAND,
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 238 VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 239
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 240 if (!ret)
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 241 input_device->dev_info_status = 0;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 242
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 243 cleanup:
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 244 complete(&input_device->wait_event);
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 245
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 246 return;
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 247 }
b95f5bcb811e39 K. Y. Srinivasan 2011-11-17 248
:::::: The code at line 218 was first introduced by commit
:::::: b95f5bcb811e3905b5376f87789da8d097fee682 HID: Move the hid-hyperv driver out of staging
:::::: TO: K. Y. Srinivasan <kys@microsoft.com>
:::::: CC: Jiri Kosina <jkosina@suse.cz>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-06-05 23:46 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-05 23:45 drivers/hid/hid-hyperv.c:218:9: sparse: sparse: cast from restricted __le16 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.