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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux