diff --git a/[refs] b/[refs] index f8b95e816901..730ca2e884bb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 15b2f3204a5c878c32939094775fb7349f707263 +refs/heads/master: 6498d9db6d2dad4cf5deb2dd09e0816904f41ca5 diff --git a/trunk/Documentation/usb/callbacks.txt b/trunk/Documentation/usb/callbacks.txt index bfb36b34b79e..9e85846bdb98 100644 --- a/trunk/Documentation/usb/callbacks.txt +++ b/trunk/Documentation/usb/callbacks.txt @@ -95,9 +95,11 @@ pre_reset int (*pre_reset)(struct usb_interface *intf); -Another driver or user space is triggering a reset on the device which -contains the interface passed as an argument. Cease IO and save any -device state you need to restore. +A driver or user space is triggering a reset on the device which +contains the interface passed as an argument. Cease IO, wait for all +outstanding URBs to complete, and save any device state you need to +restore. No more URBs may be submitted until the post_reset method +is called. If you need to allocate memory here, use GFP_NOIO or GFP_ATOMIC, if you are in atomic context. diff --git a/trunk/include/linux/usb.h b/trunk/include/linux/usb.h index 65f78ca5d88e..73c7df489607 100644 --- a/trunk/include/linux/usb.h +++ b/trunk/include/linux/usb.h @@ -806,8 +806,10 @@ struct usbdrv_wrap { * @resume: Called when the device is being resumed by the system. * @reset_resume: Called when the suspended device has been reset instead * of being resumed. - * @pre_reset: Called by usb_reset_device() when the device - * is about to be reset. + * @pre_reset: Called by usb_reset_device() when the device is about to be + * reset. This routine must not return until the driver has no active + * URBs for the device, and no more URBs may be submitted until the + * post_reset method is called. * @post_reset: Called by usb_reset_device() after the device * has been reset * @id_table: USB drivers use ID table to support hotplugging.