2021-10-26 14:14:52

by Wang Hai

[permalink] [raw]
Subject: [PATCH net] usbnet: fix error return code in usbnet_probe()

Return error code if usb_maxpacket() returns 0 in usbnet_probe().

Fixes: 397430b50a36 ("usbnet: sanity check for maxpacket")
Reported-by: Hulk Robot <[email protected]>
Signed-off-by: Wang Hai <[email protected]>
---
drivers/net/usb/usbnet.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
index 80432ee0ce69..fb5bf7d36d50 100644
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
@@ -1790,6 +1790,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
if (dev->maxpacket == 0) {
/* that is a broken device */
+ status = -EINVAL;
goto out4;
}

--
2.25.1


2021-10-26 15:49:31

by Johan Hovold

[permalink] [raw]
Subject: Re: [PATCH net] usbnet: fix error return code in usbnet_probe()

On Tue, Oct 26, 2021 at 07:25:26PM +0800, Wang Hai wrote:
> Return error code if usb_maxpacket() returns 0 in usbnet_probe().
>
> Fixes: 397430b50a36 ("usbnet: sanity check for maxpacket")
> Reported-by: Hulk Robot <[email protected]>
> Signed-off-by: Wang Hai <[email protected]>
> ---

Good catch. This is embarrassing. I double checked the error path but
failed to notice the missing return value.

> drivers/net/usb/usbnet.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> index 80432ee0ce69..fb5bf7d36d50 100644
> --- a/drivers/net/usb/usbnet.c
> +++ b/drivers/net/usb/usbnet.c
> @@ -1790,6 +1790,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
> dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
> if (dev->maxpacket == 0) {
> /* that is a broken device */
> + status = -EINVAL;

But please use -ENODEV here. -EINVAL is typically reserved for bad user
input.

> goto out4;
> }

Johan

2021-10-26 16:05:28

by Wang Hai

[permalink] [raw]
Subject: Re: [PATCH net] usbnet: fix error return code in usbnet_probe()


?? 2021/10/26 19:54, Johan Hovold ะด??:
> On Tue, Oct 26, 2021 at 07:25:26PM +0800, Wang Hai wrote:
>> Return error code if usb_maxpacket() returns 0 in usbnet_probe().
>>
>> Fixes: 397430b50a36 ("usbnet: sanity check for maxpacket")
>> Reported-by: Hulk Robot <[email protected]>
>> Signed-off-by: Wang Hai <[email protected]>
>> ---
> Good catch. This is embarrassing. I double checked the error path but
> failed to notice the missing return value.
>
>> drivers/net/usb/usbnet.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
>> index 80432ee0ce69..fb5bf7d36d50 100644
>> --- a/drivers/net/usb/usbnet.c
>> +++ b/drivers/net/usb/usbnet.c
>> @@ -1790,6 +1790,7 @@ usbnet_probe (struct usb_interface *udev, const struct usb_device_id *prod)
>> dev->maxpacket = usb_maxpacket (dev->udev, dev->out, 1);
>> if (dev->maxpacket == 0) {
>> /* that is a broken device */
>> + status = -EINVAL;
> But please use -ENODEV here. -EINVAL is typically reserved for bad user
> input.
Ok, I will send v2
>> goto out4;
>> }
> Johan
> .
>
--
Wang Hai