Re: [PATCH v4 7/8] usb: mausb_host: MA-USB PAL events processing

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

 



Hi,

I love your patch! Perhaps something to improve:

[auto build test WARNING on usb/usb-testing]
[also build test WARNING on balbi-usb/next peter.chen-usb/ci-for-usb-next linus/master linux/master v5.6 next-20200403]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/vladimir-stankovic-displaylink-com/Add-MA-USB-Host-driver/20200328-042436
base:   https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>


coccinelle warnings: (new ones prefixed by >>)

>> drivers/usb/mausb_host/utils.c:209:1-18: ERROR: nested lock+irqsave that reuses flags from line 201.
--
>> drivers/usb/mausb_host/hpal_events.c:86:46-49: ERROR: reference preceded by free on line 85

vim +209 drivers/usb/mausb_host/utils.c

   182	
   183	static ssize_t mausb_file_write(struct file *filp, const char __user *buffer,
   184					size_t size, loff_t *offset)
   185	{
   186		ssize_t num_of_bytes_to_write =
   187					sizeof(struct mausb_events_notification);
   188		struct mausb_events_notification notification;
   189		unsigned long flags;
   190		struct mausb_device *dev;
   191	
   192		if (size != (size_t)num_of_bytes_to_write) {
   193			mausb_pr_alert("Different expected bytes to write (%ld) from actual size (%ld)",
   194				       num_of_bytes_to_write, size);
   195			return MAUSB_DRIVER_WRITE_ERROR;
   196		}
   197	
   198		if (copy_from_user(&notification, buffer, size))
   199			return MAUSB_DRIVER_WRITE_ERROR;
   200	
 > 201		spin_lock_irqsave(&mss.lock, flags);
   202		dev = mausb_get_dev_from_addr_unsafe(notification.madev_addr);
   203	
   204		if (!dev) {
   205			spin_unlock_irqrestore(&mss.lock, flags);
   206			return 0;
   207		}
   208	
 > 209		spin_lock_irqsave(&dev->num_of_user_events_lock, flags);
   210		dev->num_of_user_events += notification.num_of_events;
   211		dev->num_of_completed_events += notification.num_of_completed_events;
   212		spin_unlock_irqrestore(&dev->num_of_user_events_lock, flags);
   213	
   214		queue_work(dev->workq, &dev->work);
   215		spin_unlock_irqrestore(&mss.lock, flags);
   216	
   217		return num_of_bytes_to_write;
   218	}
   219	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx



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

  Powered by Linux