diff mbox series

[-next] gss_krb5: Fix the error handling path for crypto_sync_skcipher_setkey

Message ID 20240706065008.451441-1-cuigaosheng1@huawei.com (mailing list archive)
State New
Headers show
Series [-next] gss_krb5: Fix the error handling path for crypto_sync_skcipher_setkey | expand

Commit Message

cuigaosheng July 6, 2024, 6:50 a.m. UTC
If we fail to call crypto_sync_skcipher_setkey, we should free the
memory allocation for cipher, replace err_return with err_free_cipher
to free the memory of cipher.

Fixes: 4891f2d008e4 ("gss_krb5: import functionality to derive keys into the kernel")
Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
---
 net/sunrpc/auth_gss/gss_krb5_keys.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Simon Horman July 8, 2024, 9:10 a.m. UTC | #1
On Sat, Jul 06, 2024 at 02:50:08PM +0800, Gaosheng Cui wrote:
> If we fail to call crypto_sync_skcipher_setkey, we should free the
> memory allocation for cipher, replace err_return with err_free_cipher
> to free the memory of cipher.
> 
> Fixes: 4891f2d008e4 ("gss_krb5: import functionality to derive keys into the kernel")
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>

Reviewed-by: Simon Horman <horms@kernel.org>
Chuck Lever July 8, 2024, 2:51 p.m. UTC | #2
On Sat, Jul 06, 2024 at 02:50:08PM +0800, Gaosheng Cui wrote:
> If we fail to call crypto_sync_skcipher_setkey, we should free the
> memory allocation for cipher, replace err_return with err_free_cipher
> to free the memory of cipher.
> 
> Fixes: 4891f2d008e4 ("gss_krb5: import functionality to derive keys into the kernel")
> Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
> ---
>  net/sunrpc/auth_gss/gss_krb5_keys.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/sunrpc/auth_gss/gss_krb5_keys.c b/net/sunrpc/auth_gss/gss_krb5_keys.c
> index 06d8ee0db000..4eb19c3a54c7 100644
> --- a/net/sunrpc/auth_gss/gss_krb5_keys.c
> +++ b/net/sunrpc/auth_gss/gss_krb5_keys.c
> @@ -168,7 +168,7 @@ static int krb5_DK(const struct gss_krb5_enctype *gk5e,
>  		goto err_return;
>  	blocksize = crypto_sync_skcipher_blocksize(cipher);
>  	if (crypto_sync_skcipher_setkey(cipher, inkey->data, inkey->len))
> -		goto err_return;
> +		goto err_free_cipher;
>  
>  	ret = -ENOMEM;
>  	inblockdata = kmalloc(blocksize, gfp_mask);
> -- 
> 2.25.1
> 

Anna, Trond, would you like me to take this through the NFSD tree?
Anna Schumaker July 8, 2024, 8:08 p.m. UTC | #3
On Mon, Jul 8, 2024 at 10:52 AM Chuck Lever <chuck.lever@oracle.com> wrote:
>
> On Sat, Jul 06, 2024 at 02:50:08PM +0800, Gaosheng Cui wrote:
> > If we fail to call crypto_sync_skcipher_setkey, we should free the
> > memory allocation for cipher, replace err_return with err_free_cipher
> > to free the memory of cipher.
> >
> > Fixes: 4891f2d008e4 ("gss_krb5: import functionality to derive keys into the kernel")
> > Signed-off-by: Gaosheng Cui <cuigaosheng1@huawei.com>
> > ---
> >  net/sunrpc/auth_gss/gss_krb5_keys.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/net/sunrpc/auth_gss/gss_krb5_keys.c b/net/sunrpc/auth_gss/gss_krb5_keys.c
> > index 06d8ee0db000..4eb19c3a54c7 100644
> > --- a/net/sunrpc/auth_gss/gss_krb5_keys.c
> > +++ b/net/sunrpc/auth_gss/gss_krb5_keys.c
> > @@ -168,7 +168,7 @@ static int krb5_DK(const struct gss_krb5_enctype *gk5e,
> >               goto err_return;
> >       blocksize = crypto_sync_skcipher_blocksize(cipher);
> >       if (crypto_sync_skcipher_setkey(cipher, inkey->data, inkey->len))
> > -             goto err_return;
> > +             goto err_free_cipher;
> >
> >       ret = -ENOMEM;
> >       inblockdata = kmalloc(blocksize, gfp_mask);
> > --
> > 2.25.1
> >
>
> Anna, Trond, would you like me to take this through the NFSD tree?

Sure! That sounds good to me.

Anna

>
> --
> Chuck Lever
diff mbox series

Patch

diff --git a/net/sunrpc/auth_gss/gss_krb5_keys.c b/net/sunrpc/auth_gss/gss_krb5_keys.c
index 06d8ee0db000..4eb19c3a54c7 100644
--- a/net/sunrpc/auth_gss/gss_krb5_keys.c
+++ b/net/sunrpc/auth_gss/gss_krb5_keys.c
@@ -168,7 +168,7 @@  static int krb5_DK(const struct gss_krb5_enctype *gk5e,
 		goto err_return;
 	blocksize = crypto_sync_skcipher_blocksize(cipher);
 	if (crypto_sync_skcipher_setkey(cipher, inkey->data, inkey->len))
-		goto err_return;
+		goto err_free_cipher;
 
 	ret = -ENOMEM;
 	inblockdata = kmalloc(blocksize, gfp_mask);