drivers/usb/cdns3/gadget.c:429 cdns3_free_aligned_request_buf() error: double unlocked 'priv_dev->lock' (orig line 421)

From: kernel test robot
Date: Fri Aug 07 2020 - 06:37:13 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 86cfccb66937dd6cbf26ed619958b9e587e6a115
commit: 7733f6c32e36ff9d7adadf40001039bf219b1cbe usb: cdns3: Add Cadence USB3 DRD Driver
date: 11 months ago
config: parisc-randconfig-m031-20200807 (attached as .config)
compiler: hppa-linux-gcc (GCC) 9.3.0

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

smatch warnings:
drivers/usb/cdns3/gadget.c:429 cdns3_free_aligned_request_buf() error: double unlocked 'priv_dev->lock' (orig line 421)

vim +429 drivers/usb/cdns3/gadget.c

402
403 static void cdns3_free_aligned_request_buf(struct work_struct *work)
404 {
405 struct cdns3_device *priv_dev = container_of(work, struct cdns3_device,
406 aligned_buf_wq);
407 struct cdns3_aligned_buf *buf, *tmp;
408 unsigned long flags;
409
410 spin_lock_irqsave(&priv_dev->lock, flags);
411
412 list_for_each_entry_safe(buf, tmp, &priv_dev->aligned_buf_list, list) {
413 if (!buf->in_use) {
414 list_del(&buf->list);
415
416 /*
417 * Re-enable interrupts to free DMA capable memory.
418 * Driver can't free this memory with disabled
419 * interrupts.
420 */
> 421 spin_unlock_irqrestore(&priv_dev->lock, flags);
422 dma_free_coherent(priv_dev->sysdev, buf->size,
423 buf->buf, buf->dma);
424 kfree(buf);
425 spin_lock_irqsave(&priv_dev->lock, flags);
426 }
427 }
428
> 429 spin_unlock_irqrestore(&priv_dev->lock, flags);
430 }
431

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

Attachment: .config.gz
Description: application/gzip