* [PATCH] smb/client: Fix error code in smb2_aead_req_alloc()
@ 2026-06-11 7:35 Dan Carpenter
2026-06-11 20:36 ` Steve French
0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2026-06-11 7:35 UTC (permalink / raw)
To: David Howells
Cc: Steve French, Paulo Alcantara, Ronnie Sahlberg, Shyam Prasad N,
Tom Talpey, Bharath SM, linux-cifs, samba-technical, linux-kernel,
kernel-janitors
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: stable@kernel.org
Signed-off-by: Dan Carpenter <error27@gmail.com>
---
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
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] smb/client: Fix error code in smb2_aead_req_alloc()
2026-06-11 7:35 [PATCH] smb/client: Fix error code in smb2_aead_req_alloc() Dan Carpenter
@ 2026-06-11 20:36 ` Steve French
0 siblings, 0 replies; 2+ messages in thread
From: Steve French @ 2026-06-11 20:36 UTC (permalink / raw)
To: Dan Carpenter
Cc: David Howells, Tom Talpey, Shyam Prasad N, Paulo Alcantara,
linux-cifs, kernel-janitors, samba-technical, linux-kernel,
Steve French, Bharath SM
merged into cifs-2.6.git for-next
On Thu, Jun 11, 2026 at 4:00 AM Dan Carpenter via samba-technical
<samba-technical@lists.samba.org> 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: stable@kernel.org
> Signed-off-by: Dan Carpenter <error27@gmail.com>
> ---
> 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
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-11 20:37 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-11 7:35 [PATCH] smb/client: Fix error code in smb2_aead_req_alloc() Dan Carpenter
2026-06-11 20:36 ` Steve French
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox