Re: [PATCH v4] brcm80211: fmac: Add error log in brcmf_usb_dl_cmd()

Arend Van Spriel <[email protected]>
Newsgroups dev.linux.lists.brcm80211,org.kernel.vger.linux-kernel,org.kernel.vger.linux-wireless
Message-ID <[email protected]>
On April 15, 2025 2:21:37 PM Wentao Liang <[email protected]> wrote:

> In brcmf_usb_dl_cmd(), the error logging is not enough to describe
> the error state. And some caller of the brcmf_usb_dl_cmd() does not
> handle its error. An error log in brcmf_usb_dl_cmd() is needed to
> prevent silent failure.
>
> Add error handling in brcmf_usb_dl_cmd() to log the command id and
> error code in the brcmf_usb_dl_cmd() fails. In this way, every
> invocation of the function logs a message upon failure.
>
> Signed-off-by: Wentao Liang <[email protected]>
> ---
> v4: Fix spelling problem.
> v3: Change patch name and comment. Move error log into brcmf_usb_dl_cmd().
> v2: Remove redundant bailing out code.
>
> .../wireless/broadcom/brcm80211/brcmfmac/usb.c   | 16 ++++++++++++----
> 1 file changed, 12 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
> index d06c724f63d9..a11a6d9f3c2b 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
> @@ -744,12 +744,16 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info 
> *devinfo, u8 cmd,
> char *tmpbuf;
> u16 size;
>
> - if ((!devinfo) || (devinfo->ctl_urb == NULL))
> - return -EINVAL;
> + if (!devinfo || !devinfo->ctl_urb) {
> + ret = -EINVAL;
> + goto err;
> + }
>
> tmpbuf = kmalloc(buflen, GFP_ATOMIC);
> - if (!tmpbuf)
> - return -ENOMEM;
> + if (!tmpbuf) {
> + ret = -ENOMEM;
> + goto err;
> + }
>
> size = buflen;
> devinfo->ctl_urb->transfer_buffer_length = size;
> @@ -783,6 +787,10 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info 
> *devinfo, u8 cmd,
> finalize:

The finalize label is used for failure path as well. So I suggest to get 
rid of it requiring modified patch like:

- finalize:
        kfree(tmpbuf);
-       return ret;
+.     return 0;
+
+ err:

+      brcmf_err("dl cmd %u failed: err=%d\n", cmd, ret);
+      kfree(tmpbuf);
+      return ret;
}

Obviously this means tmpbuf should be NULL initialized.

Regards,
Arend
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.