diff mbox series

net: usb: qmi_wwan: Add error handling for usbnet_get_ethernet_addr

Message ID 20250120170026.1880-1-vulab@iscas.ac.cn (mailing list archive)
State New
Headers show
Series net: usb: qmi_wwan: Add error handling for usbnet_get_ethernet_addr | expand

Commit Message

Wentao Liang Jan. 20, 2025, 5 p.m. UTC
In qmi_wwan_bind(), usbnet_get_ethernet_addr() is called
without error handling, risking unnoticed failures and
inconsistent behavior compared to other parts of the code.

Fix this issue by adding an error handling for the
usbnet_get_ethernet_addr(), improving code robustness.

Fixes: 423ce8caab7e ("net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices")
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/net/usb/qmi_wwan.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Breno Leitao Jan. 20, 2025, 5:34 p.m. UTC | #1
On Tue, Jan 21, 2025 at 01:00:26AM +0800, Wentao Liang wrote:
> In qmi_wwan_bind(), usbnet_get_ethernet_addr() is called
> without error handling, risking unnoticed failures and
> inconsistent behavior compared to other parts of the code.
> 
> Fix this issue by adding an error handling for the
> usbnet_get_ethernet_addr(), improving code robustness.
> 
> Fixes: 423ce8caab7e ("net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices")
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>

Reviewed-by: Breno Leitao <leitao@debian.org>
Bjørn Mork Jan. 20, 2025, 6:06 p.m. UTC | #2
Wentao Liang <vulab@iscas.ac.cn> writes:

> In qmi_wwan_bind(), usbnet_get_ethernet_addr() is called
> without error handling, risking unnoticed failures and
> inconsistent behavior compared to other parts of the code.
>
> Fix this issue by adding an error handling for the
> usbnet_get_ethernet_addr(), improving code robustness.
>
> Fixes: 423ce8caab7e ("net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices")
> Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> ---
>  drivers/net/usb/qmi_wwan.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
> index e9208a8d2bfa..7aa576bfe76b 100644
> --- a/drivers/net/usb/qmi_wwan.c
> +++ b/drivers/net/usb/qmi_wwan.c
> @@ -779,7 +779,9 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
>  	/* errors aren't fatal - we can live with the dynamic address */
>  	if (cdc_ether && cdc_ether->wMaxSegmentSize) {
>  		dev->hard_mtu = le16_to_cpu(cdc_ether->wMaxSegmentSize);
> -		usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
> +		status = usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
> +		if (status < 0)
> +			goto err;
>  	}
>  
>  	/* claim data interface and set it up */



Did you read the comment?

This intentinonally ignores any errors.  I don't know how to make it
clear anough for these AI bots to understand.  Any advice there?


NAK

(and why weren't I CCed?  Noticed this by chance only...)


Bjørn
Oliver Neukum Jan. 21, 2025, 9:40 a.m. UTC | #3
On 20.01.25 18:00, Wentao Liang wrote:
> In qmi_wwan_bind(), usbnet_get_ethernet_addr() is called
> without error handling, risking unnoticed failures and
> inconsistent behavior compared to other parts of the code.

Hi,

unfortunately this makes no difference between a genuine
IO error and the device simply providing no string.
Does the device need to provide a string for the MAC
in order to function?

Frankly, this patch does not look like a good idea,
as it disregards the reasoning expressed in the comment
seen in the code.

	Regards
		Oliver
Andrew Lunn Jan. 21, 2025, 4:30 p.m. UTC | #4
On Mon, Jan 20, 2025 at 07:06:52PM +0100, Bjørn Mork wrote:
> Wentao Liang <vulab@iscas.ac.cn> writes:
> 
> > In qmi_wwan_bind(), usbnet_get_ethernet_addr() is called
> > without error handling, risking unnoticed failures and
> > inconsistent behavior compared to other parts of the code.
> >
> > Fix this issue by adding an error handling for the
> > usbnet_get_ethernet_addr(), improving code robustness.
> >
> > Fixes: 423ce8caab7e ("net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices")
> > Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
> > ---
> >  drivers/net/usb/qmi_wwan.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
> > index e9208a8d2bfa..7aa576bfe76b 100644
> > --- a/drivers/net/usb/qmi_wwan.c
> > +++ b/drivers/net/usb/qmi_wwan.c
> > @@ -779,7 +779,9 @@ static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
> >  	/* errors aren't fatal - we can live with the dynamic address */
> >  	if (cdc_ether && cdc_ether->wMaxSegmentSize) {
> >  		dev->hard_mtu = le16_to_cpu(cdc_ether->wMaxSegmentSize);
> > -		usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
> > +		status = usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
> > +		if (status < 0)
> > +			goto err;
> >  	}
> >  
> >  	/* claim data interface and set it up */
> 
> 
> 
> Did you read the comment?
> 
> This intentinonally ignores any errors.  I don't know how to make it
> clear anough for these AI bots to understand.  Any advice there?

The problem is not really the AI bot, but the user of the AI bot. We
often see this problem, and need to teach bot drivers that the bot is
just the start. The bot points out a potential issue, but it needs a
human developer to verify the issue and consider what the real fix is,
which might be, as in this case, a false positive and no fix is
needed.

I don't know how to really fix this issue, other than try to teach the
bot drivers to actually think.

> NAK
> 
> (and why weren't I CCed?  Noticed this by chance only...)

Probably the same issue. The bot driver does not know the processes,
has not run the get_maintainers script. This is again part of the
issue with these sorts of patched, they are often low quality and need
careful review.

	Andrew
diff mbox series

Patch

diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index e9208a8d2bfa..7aa576bfe76b 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -779,7 +779,9 @@  static int qmi_wwan_bind(struct usbnet *dev, struct usb_interface *intf)
 	/* errors aren't fatal - we can live with the dynamic address */
 	if (cdc_ether && cdc_ether->wMaxSegmentSize) {
 		dev->hard_mtu = le16_to_cpu(cdc_ether->wMaxSegmentSize);
-		usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
+		status = usbnet_get_ethernet_addr(dev, cdc_ether->iMACAddress);
+		if (status < 0)
+			goto err;
 	}
 
 	/* claim data interface and set it up */