On Thu, 22 Nov 2012, naveen yadav wrote: > Hi, > > we are using 3.2.2 version of kernel. > > When Bluetooth(connected to USB 2.0) is suspended, urb->use_count > value does not become zero and eventually there is a continuous wait > in wait_event() of usb_kill_urb(). > wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0); > > urb_count is incremented at only one place in usb_hcd_submit_urb() and That's how it is _supposed_ to work. You have discovered that something else increments urb->use_count. > decremented in usb_hcd_giveback_urb(). (Also, in error case inside > usb_hcd_submit_urb()). After taking print of urb->use_count at all > these places, I see, even without connecting the Bluetooth device > urb_count is incremented while below execution has never been > decremented. > ..... > [ 3.490000] ====>[usb_hcd_giveback_urb][1626] urb->use_count = 0 > pipe=2147484032 [vid=0x1d6b] [pid=0x0002][devno=1] > [ 3.540000] ====>[usb_hcd_submit_urb][1482] urb->use_count = 2 > pipe=1077969280 [vid=0x1d6b] [pid=0x0002][devno=1] > [ 3.540000] ====>[usb_hcd_giveback_urb][1626] urb->use_count = 1 > pipe=1077969280 [vid=0x1d6b] [pid=0x0002][devno=1] Now you need to find out what other code has changed urb->use_count and fix it. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html