Re: [PATCH 01/12] usbnet: introduce usbnet 3 command helpers
From: Oliver Neukum <hidden>
Date: 2012-10-10 05:51:37
On Wednesday 10 October 2012 11:19:09 Ming Lei wrote:
On Tue, Oct 9, 2012 at 4:47 PM, Oliver Neukum [off-list ref] wrote:quoted
Using GFP_KERNEL you preclude using those in resume() and error handling. Please pass a gfp_t parameter.IMO, it is not a big deal because generally only several bytes are to be allocated inside these helpers.
Any allocation can do it, if the VM layer decides to block.
If you still think the problem should be considered, another candidate fix is to take GFP_NOIO during system suspend/resume, and take GFP_KERNEL in other situations.
No, the problem is autoresume. Suppose we have a device with two interface. Interface A be usbnet; interface B something you page on. Now consider that you can only resume both interfaces and this is (and needs to be) done synchronously. Now we can have this code path: autoresume of device -> resume() -> kmalloc(..., GFP_KERNEL) -> VM layer decides to start paging out -> IO to interface B -> autoresume of device --> DEADLOCK We need to use GFP_NOIO in situations the helper cannot know about. Please add a gfp_t parameter. Then the caller will solve that. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html