Note that it is perfectly normal for devices to be registered on a bus
without a driver. Perhaps the usbhid core doesn't expect this, though,
or perhaps it doesn't make sense for HID devices. Regardless, I don't
see how this could cause the problem.
Earlier, Bruno said that the hang occurs in hid_cancel_delayed_stuff(),
presumably during one of its cancel_work_sync() calls, and presumably
because the workqueue has been frozen. But as far as I can tell,
cancel_work_sync() should work just fine if the workqueue has been
frozen. Maybe this should be investigated more closely.
Bruno, can you confirm that the hang occurs during one of those
cancel_work_sync() calls?
Alan Stern
--