Re: [PATCH] smb/client: Fix error code in smb2_aead_req_alloc()

Steve French <[email protected]> Thu, 11 Jun 2026 15:36:56 -0500
Newsgroups gmane.linux.kernel.janitors,gmane.linux.kernel.cifs,gmane.network.samba.internals,gmane.linux.kernel
Message-ID <CAH2r5mvKDLssgLBs8x5zNhp-+-h7yNPYzgtf_LQm3kchRVtZ4w@mail.gmail.com>
merged into cifs-2.6.git for-next

On Thu, Jun 11, 2026 at 4:00 AM Dan Carpenter via samba-technical
<[email protected]> wrote:
>
> The "*num_sgs" variable is a u32 so "ERR_PTR(*num_sgs)" doesn't work.
> We would have to do something similar to the previous line where it's
> cast to int and then long.  However, it's simpler to store the return in
> an int ret variable.
>
> This bug would eventually result in a crash when dereference the invalid
> error pointer.
>
> Fixes: d08089f649a0 ("cifs: Change the I/O paths to use an iterator rather than a page list")
> Cc: [email protected]
> Signed-off-by: Dan Carpenter <[email protected]>
> ---
>  fs/smb/client/smb2ops.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/fs/smb/client/smb2ops.c b/fs/smb/client/smb2ops.c
> index a3257815e661..a8f8feeeccb5 100644
> --- a/fs/smb/client/smb2ops.c
> +++ b/fs/smb/client/smb2ops.c
> @@ -4359,11 +4359,13 @@ static void *smb2_aead_req_alloc(struct crypto_aead *tfm, const struct smb_rqst
>         unsigned int req_size = sizeof(**req) + crypto_aead_reqsize(tfm);
>         unsigned int iv_size = crypto_aead_ivsize(tfm);
>         unsigned int len;
> +       int ret;
>         u8 *p;
>
> -       *num_sgs = cifs_get_num_sgs(rqst, num_rqst, sig);
> -       if (IS_ERR_VALUE((long)(int)*num_sgs))
> -               return ERR_PTR(*num_sgs);
> +       ret = cifs_get_num_sgs(rqst, num_rqst, sig);
> +       if (ret < 0)
> +               return ERR_PTR(ret);
> +       *num_sgs = ret;
>
>         len = iv_size;
>         len += crypto_aead_alignmask(tfm) & ~(crypto_tfm_ctx_alignment() - 1);
> --
> 2.53.0
>
>


-- 
Thanks,

Steve