Re: [PATCH v1] drivers/usb/core/driver: check return value of usb_set_interface()

From: kernel test robot
Date: Fri Sep 09 2022 - 07:24:28 EST


Hi Li,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on usb/usb-testing]
[also build test ERROR on westeri-thunderbolt/next staging/staging-testing linus/master v6.0-rc4 next-20220909]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Li-Zhong/drivers-usb-core-driver-check-return-value-of-usb_set_interface/20220909-124349
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing
config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20220909/202209091933.ydDI9QtH-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-5) 11.3.0
reproduce (this is a W=1 build):
# https://github.com/intel-lab-lkp/linux/commit/720d6f8c6938ee748288a012e3212b26962a7960
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Li-Zhong/drivers-usb-core-driver-check-return-value-of-usb_set_interface/20220909-124349
git checkout 720d6f8c6938ee748288a012e3212b26962a7960
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash drivers/usb/

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

In file included from include/linux/device.h:15,
from drivers/usb/core/driver.c:28:
drivers/usb/core/driver.c: In function 'usb_resume_interface':
>> drivers/usb/core/driver.c:1337:45: error: incompatible type for argument 1 of '_dev_err'
1337 | dev_err(intf->dev, "usb_set_interface error %d\n",
| ~~~~^~~~~
| |
| struct device
include/linux/dev_printk.h:110:25: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
drivers/usb/core/driver.c:1337:33: note: in expansion of macro 'dev_err'
1337 | dev_err(intf->dev, "usb_set_interface error %d\n",
| ^~~~~~~
include/linux/dev_printk.h:50:36: note: expected 'const struct device *' but argument is of type 'struct device'
50 | void _dev_err(const struct device *dev, const char *fmt, ...);
| ~~~~~~~~~~~~~~~~~~~~~^~~


vim +/_dev_err +1337 drivers/usb/core/driver.c

1316
1317 static int usb_resume_interface(struct usb_device *udev,
1318 struct usb_interface *intf, pm_message_t msg, int reset_resume)
1319 {
1320 struct usb_driver *driver;
1321 int status = 0;
1322
1323 if (udev->state == USB_STATE_NOTATTACHED)
1324 goto done;
1325
1326 /* Don't let autoresume interfere with unbinding */
1327 if (intf->condition == USB_INTERFACE_UNBINDING)
1328 goto done;
1329
1330 /* Can't resume it if it doesn't have a driver. */
1331 if (intf->condition == USB_INTERFACE_UNBOUND) {
1332
1333 /* Carry out a deferred switch to altsetting 0 */
1334 if (intf->needs_altsetting0 && !intf->dev.power.is_prepared) {
1335 status = usb_set_interface(udev, intf->altsetting[0].desc.bInterfaceNumber, 0);
1336 if (status < 0)
> 1337 dev_err(intf->dev, "usb_set_interface error %d\n",
1338 status);
1339 intf->needs_altsetting0 = 0;
1340 }
1341 goto done;
1342 }
1343
1344 /* Don't resume if the interface is marked for rebinding */
1345 if (intf->needs_binding)
1346 goto done;
1347 driver = to_usb_driver(intf->dev.driver);
1348
1349 if (reset_resume) {
1350 if (driver->reset_resume) {
1351 status = driver->reset_resume(intf);
1352 if (status)
1353 dev_err(&intf->dev, "%s error %d\n",
1354 "reset_resume", status);
1355 } else {
1356 intf->needs_binding = 1;
1357 dev_dbg(&intf->dev, "no reset_resume for driver %s?\n",
1358 driver->name);
1359 }
1360 } else {
1361 status = driver->resume(intf);
1362 if (status)
1363 dev_err(&intf->dev, "resume error %d\n", status);
1364 }
1365
1366 done:
1367 dev_vdbg(&intf->dev, "%s: status %d\n", __func__, status);
1368
1369 /* Later we will unbind the driver and/or reprobe, if necessary */
1370 return status;
1371 }
1372

--
0-DAY CI Kernel Test Service
https://01.org/lkp