2022-11-16 14:06:52

by Marco Pagani

[permalink] [raw]
Subject: [PATCH] habanalabs: added return value check for hl_fw_dynamic_send_clear_cmd()

The clang-analyzer reported a warning: "Value stored to 'rc' is never
read".

The return value check for the first hl_fw_dynamic_send_clear_cmd() call
in hl_fw_dynamic_send_protocol_cmd() appears to be missing.

Signed-off-by: Marco Pagani <[email protected]>
---
drivers/misc/habanalabs/common/firmware_if.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/misc/habanalabs/common/firmware_if.c b/drivers/misc/habanalabs/common/firmware_if.c
index 2de6a9bd564d..311942108dbc 100644
--- a/drivers/misc/habanalabs/common/firmware_if.c
+++ b/drivers/misc/habanalabs/common/firmware_if.c
@@ -1782,6 +1782,8 @@ int hl_fw_dynamic_send_protocol_cmd(struct hl_device *hdev,

/* first send clear command to clean former commands */
rc = hl_fw_dynamic_send_clear_cmd(hdev, fw_loader);
+ if (rc)
+ return rc;

/* send the actual command */
hl_fw_dynamic_send_cmd(hdev, fw_loader, cmd, size);
--
2.38.1



2022-11-16 15:54:47

by Greg Kroah-Hartman

[permalink] [raw]
Subject: Re: [PATCH] habanalabs: added return value check for hl_fw_dynamic_send_clear_cmd()

On Wed, Nov 16, 2022 at 02:41:25PM +0100, Marco Pagani wrote:
> The clang-analyzer reported a warning: "Value stored to 'rc' is never
> read".
>
> The return value check for the first hl_fw_dynamic_send_clear_cmd() call
> in hl_fw_dynamic_send_protocol_cmd() appears to be missing.
>
> Signed-off-by: Marco Pagani <[email protected]>
> ---
> drivers/misc/habanalabs/common/firmware_if.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/misc/habanalabs/common/firmware_if.c b/drivers/misc/habanalabs/common/firmware_if.c
> index 2de6a9bd564d..311942108dbc 100644
> --- a/drivers/misc/habanalabs/common/firmware_if.c
> +++ b/drivers/misc/habanalabs/common/firmware_if.c
> @@ -1782,6 +1782,8 @@ int hl_fw_dynamic_send_protocol_cmd(struct hl_device *hdev,
>
> /* first send clear command to clean former commands */
> rc = hl_fw_dynamic_send_clear_cmd(hdev, fw_loader);
> + if (rc)
> + return rc;
>
> /* send the actual command */
> hl_fw_dynamic_send_cmd(hdev, fw_loader, cmd, size);

Are you sure this is ok? If the first "clean the buffer" command fails,
all should still be good as that wasn't the real command.

But maybe the hardware will never fail this?

thanks,

greg k-h

2022-11-17 09:44:32

by Oded Gabbay

[permalink] [raw]
Subject: Re: [PATCH] habanalabs: added return value check for hl_fw_dynamic_send_clear_cmd()

On Wed, Nov 16, 2022 at 5:17 PM Greg Kroah-Hartman
<[email protected]> wrote:
>
> On Wed, Nov 16, 2022 at 02:41:25PM +0100, Marco Pagani wrote:
> > The clang-analyzer reported a warning: "Value stored to 'rc' is never
> > read".
> >
> > The return value check for the first hl_fw_dynamic_send_clear_cmd() call
> > in hl_fw_dynamic_send_protocol_cmd() appears to be missing.
> >
> > Signed-off-by: Marco Pagani <[email protected]>
> > ---
> > drivers/misc/habanalabs/common/firmware_if.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/misc/habanalabs/common/firmware_if.c b/drivers/misc/habanalabs/common/firmware_if.c
> > index 2de6a9bd564d..311942108dbc 100644
> > --- a/drivers/misc/habanalabs/common/firmware_if.c
> > +++ b/drivers/misc/habanalabs/common/firmware_if.c
> > @@ -1782,6 +1782,8 @@ int hl_fw_dynamic_send_protocol_cmd(struct hl_device *hdev,
> >
> > /* first send clear command to clean former commands */
> > rc = hl_fw_dynamic_send_clear_cmd(hdev, fw_loader);
> > + if (rc)
> > + return rc;
> >
> > /* send the actual command */
> > hl_fw_dynamic_send_cmd(hdev, fw_loader, cmd, size);
>
> Are you sure this is ok? If the first "clean the buffer" command fails,
> all should still be good as that wasn't the real command.
>
> But maybe the hardware will never fail this?
>
> thanks,
>
> greg k-h

Actually it's a real mistake, it was overlooked when the code was
written (although chances of failure in clear cmd are very small).
I'll apply it to my tree.
Reviewed-by: Oded Gabbay <[email protected]>
Thanks,
Oded