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

From: kbuild test robot
Date: Sat Apr 04 2020 - 12:07:22 EST


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