summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunlin Yang <yangjunlin@yulong.com>2021-06-21 16:24:15 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-06-24 15:11:26 +0300
commit42601e356bfa8123e44a3d726d4abd4164a71f7c (patch)
tree4b520b738c4764c72eb43d3ed593877f79310ef0
parent8e9910c5ad97aa9479ab19e6535065522d6a0f08 (diff)
downloadlinux-42601e356bfa8123e44a3d726d4abd4164a71f7c.tar.xz
usb: class: cdc-wdm: return the correct errno code
The "rv" is initialized to "-ENOMEM", because "rv" is re-assigned to "-EINVAL", when kmalloc & usb_alloc_urb failed, the return value should return "-ENOMEM" rather than "-EINVAL",so the "rv" assignment is placed in the position where usb_endpoint_is_int_in is false. Acked-by: Oliver Neukum <oneukum@suse.com> Signed-off-by: Junlin Yang <yangjunlin@yulong.com> Link: https://lore.kernel.org/r/20210621132415.2341-1-angkery@163.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/usb/class/cdc-wdm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c
index d1e4a7379beb..2c63c051c612 100644
--- a/drivers/usb/class/cdc-wdm.c
+++ b/drivers/usb/class/cdc-wdm.c
@@ -868,9 +868,10 @@ static int wdm_create(struct usb_interface *intf, struct usb_endpoint_descriptor
INIT_WORK(&desc->rxwork, wdm_rxwork);
INIT_WORK(&desc->service_outs_intr, service_interrupt_work);
- rv = -EINVAL;
- if (!usb_endpoint_is_int_in(ep))
+ if (!usb_endpoint_is_int_in(ep)) {
+ rv = -EINVAL;
goto err;
+ }
desc->wMaxPacketSize = usb_endpoint_maxp(ep);