• Sudeep Holla's avatar
    usb: isp1760: fix possible deadlock in isp1760_udc_irq · 79852397
    Sudeep Holla authored
    Use spin_{un,}lock_irq{save,restore} in isp1760_udc_{start,stop} to
    prevent following potentially deadlock scenario between
    isp1760_udc_{start,stop} and isp1760_udc_irq :
    
    =================================
    [ INFO: inconsistent lock state ]
    4.0.0-rc2-00004-gf7bb2ef60173 #51 Not tainted
    ---------------------------------
    inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
    in:imklog/2118 [HC1[1]:SC0[0]:HE0:SE1] takes:
     (&(&udc->lock)->rlock){?.+...}, at: [<c0397a93>] isp1760_udc_irq+0x367/0x9dc
    {HARDIRQ-ON-W} state was registered at:
      [<c05135b3>] _raw_spin_lock+0x23/0x30
      [<c0396b87>] isp1760_udc_start+0x23/0xf8
      [<c039dc21>] udc_bind_to_driver+0x71/0xb0
      [<c039de4f>] usb_gadget_probe_driver+0x53/0x9c
      [<bf80d0df>] usb_composite_probe+0x8a/0xa4 [libcomposite]
      [<bf8311a7>] 0xbf8311a7
      [<c00088c5>] do_one_initcall+0x8d/0x17c
      [<c050b92d>] do_init_module+0x49/0x148
      [<c0087323>] load_module+0xb7f/0xbc4
      [<c0087471>] SyS_finit_module+0x51/0x74
      [<c000d8c1>] ret_fast_syscall+0x1/0x68
    irq event stamp: 4966
    hardirqs last  enabled at (4965): [<c05137df>] _raw_spin_unlock_irq+0x1f/0x24
    hardirqs last disabled at (4966): [<c00110b3>] __irq_svc+0x33/0x64
    softirqs last  enabled at (4458): [<c0023475>] __do_softirq+0x23d/0x2d0
    softirqs last disabled at (4389): [<c002380b>] irq_exit+0xef/0x15c
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&(&udc->lock)->rlock);
      <Interrupt>
        lock(&(&udc->lock)->rlock);
    
     *** DEADLOCK ***
    
    1 lock held by in:imklog/2118:
     #0:  (&f->f_pos_lock){+.+.+.}, at: [<c010a101>] __fdget_pos+0x31/0x34
    Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    79852397
isp1760-udc.c 36.2 KB