On Fri, 5 Jul 2013, Victor Yeo wrote: > May i know which part of the do_set_config() or do_set_interface() has > to be run in process context? Well, it's not exactly true that the routine has to run in process context. More accurately, it has to run at a time when the main thread isn't using any of the endpoints or request structures, because do_set_interface() deallocates the requests and disables the endpoints. For example, if the main thread was in the middle of executing a SCSI command, do_set_config() would have to wait until it finished. The easiest way to do this is by the exception technique. That way do_set_config() is called by the main thread itself, so it knows the main thread isn't using those structures. 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