The routine wasn't probably meant/designed with re-entrancy in mind, but
looking quickly at all the subsequent callpaths, I don't see why it should
cause any problem, as skb_queue_purge(), usb_kill_urb() and usb_free_urb()
should be safe.
Maybe we should even add test_bit() for HID_STARTED and HID_DISCONNECTED
at the beginning of the low-level drivers' ->stop callbacks, so that we
don't do all the magic when all the work has been already done.
--
Jiri Kosina
SUSE Labs, Novell Inc.
--