RE: [PATCH] misc: mei: client.c: fix some error code problem in mei_cl_write

From: Usyskin, Alexander
Date: Mon Nov 27 2023 - 02:11:17 EST


> -----Original Message-----
> From: Su Hui <suhui@xxxxxxxxxxxx>
> Sent: Monday, November 20, 2023 10:54
> To: Winkler, Tomas <tomas.winkler@xxxxxxxxx>; arnd@xxxxxxxx;
> gregkh@xxxxxxxxxxxxxxxxxxx; nathan@xxxxxxxxxx; ndesaulniers@xxxxxxxxxx; Rix,
> Tom <trix@xxxxxxxxxx>
> Cc: Su Hui <suhui@xxxxxxxxxxxx>; Usyskin, Alexander
> <alexander.usyskin@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx;
> llvm@xxxxxxxxxxxxxxx; kernel-janitors@xxxxxxxxxxxxxxx
> Subject: [PATCH] misc: mei: client.c: fix some error code problem in mei_cl_write
>
> Clang static analyzer complains that value stored to 'rets' is never
> read. Remove some useless code, and let 'buf_len = -EOVERFLOW' to make
> sure we can return '-EOVERFLOW'.
>
> mei_msg_hdr_init() return negative error code, rets should be
> 'PTR_ERR(mei_hdr)' rather than '-PTR_ERR(mei_hdr)'.
>
> Fixes: 0cd7c01a60f8 ("mei: add support for mei extended header.")
> Fixes: 8c8d964ce90f ("mei: move hbuf_depth from the mei device to the hw
> modules")
> Signed-off-by: Su Hui <suhui@xxxxxxxxxxxx>
> ---
> drivers/misc/mei/client.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/misc/mei/client.c b/drivers/misc/mei/client.c
> index 9c8fc87938a7..00dac0a47da0 100644
> --- a/drivers/misc/mei/client.c
> +++ b/drivers/misc/mei/client.c
> @@ -2011,7 +2011,7 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct mei_cl_cb
> *cb, unsigned long time
>
> mei_hdr = mei_msg_hdr_init(cb);
> if (IS_ERR(mei_hdr)) {
> - rets = -PTR_ERR(mei_hdr);
> + rets = PTR_ERR(mei_hdr);
> mei_hdr = NULL;
> goto err;
> }
> @@ -2020,19 +2020,17 @@ ssize_t mei_cl_write(struct mei_cl *cl, struct
> mei_cl_cb *cb, unsigned long time
>
> if (rets == 0) {
> cl_dbg(dev, cl, "No flow control credentials: not sending.\n");
> - rets = buf_len;
> goto out;
> }
>
> if (!mei_hbuf_acquire(dev)) {
> cl_dbg(dev, cl, "Cannot acquire the host buffer: not sending.\n");
> - rets = buf_len;
> goto out;
> }
>
> hbuf_slots = mei_hbuf_empty_slots(dev);
> if (hbuf_slots < 0) {
> - rets = -EOVERFLOW;
> + buf_len = -EOVERFLOW;

Here code should go to the error path, not wallpaper over it.
The "goto out;" below should be replaced by "goto err;" instead of above fix.

--
Thanks,
Sasha


> goto out;
> }
>
> --
> 2.30.2