The "lsof" command can be used to see who is using a file, so depending on your configuration you might be able to run something like:
Then you can end whatever processes are listed, and then maybe it will revive the USB stack.
I've used the following in the past when doing some USB work on a development platform:
http://www.clearchain.com/blog/posts...us-under-linux
It works fairly well, but doesn't recover from all conditions of course.
The main issue might be something in a kernel module, or the device. It would require a lot more analysis to work it all out.