Dear Alan,
Thanks for your reply ,
We check on 3.2.34 and 3.6.7 on X86 host machine. and result is same
without connecting Bluetooth device.
I am attaching log
On Thu, Nov 22, 2012 at 9:08 PM, Alan Stern [off-list ref] wrote:
On Thu, 22 Nov 2012, naveen yadav wrote:
quoted
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.
quoted
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.
quoted
.....
[ 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