diff mbox series

USB: serial: ch341: GFP_KERNEL in reset_resume()

Message ID 20220907132040.7747-1-oneukum@suse.com (mailing list archive)
State New, archived
Headers show
Series USB: serial: ch341: GFP_KERNEL in reset_resume() | expand

Commit Message

Oliver Neukum Sept. 7, 2022, 1:20 p.m. UTC
All instances of reset_resume() are potential
parts of the block IO path. Use GFP_NOIO.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
---
 drivers/usb/serial/ch341.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Johan Hovold Sept. 13, 2022, 12:59 p.m. UTC | #1
On Wed, Sep 07, 2022 at 03:20:40PM +0200, Oliver Neukum wrote:
> All instances of reset_resume() are potential
> parts of the block IO path. Use GFP_NOIO.

Please be more verbose here. I have to think through this every time it
is brought up, and I'm not even sure it's actually an issue any more.

Furthermore, if this is indeed still a problem, then this should be
fixed in a central place using memalloc_noio_save().

> Signed-off-by: Oliver Neukum <oneukum@suse.com>
> ---
>  drivers/usb/serial/ch341.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
> index af01a462cc43..3d4f68d58513 100644
> --- a/drivers/usb/serial/ch341.c
> +++ b/drivers/usb/serial/ch341.c
> @@ -137,7 +137,7 @@ static int ch341_control_in(struct usb_device *dev,

And this helper is not only used in the reset path.

>  	r = usb_control_msg_recv(dev, 0, request,
>  				 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
>  				 value, index, buf, bufsize, DEFAULT_TIMEOUT,
> -				 GFP_KERNEL);
> +				 GFP_NOIO);
>  	if (r) {
>  		dev_err(&dev->dev, "failed to receive control message: %d\n",

Johan
diff mbox series

Patch

diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c
index af01a462cc43..3d4f68d58513 100644
--- a/drivers/usb/serial/ch341.c
+++ b/drivers/usb/serial/ch341.c
@@ -137,7 +137,7 @@  static int ch341_control_in(struct usb_device *dev,
 	r = usb_control_msg_recv(dev, 0, request,
 				 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
 				 value, index, buf, bufsize, DEFAULT_TIMEOUT,
-				 GFP_KERNEL);
+				 GFP_NOIO);
 	if (r) {
 		dev_err(&dev->dev, "failed to receive control message: %d\n",
 			r);