]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
sunrpc: GFP_KERNEL should be GFP_NOFS in crypto code
authorJ. Bruce Fields <bfields@redhat.com>
Wed, 26 Oct 2016 20:03:00 +0000 (16:03 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 1 Nov 2016 19:47:52 +0000 (15:47 -0400)
Writes may depend on the auth_gss crypto code, so we shouldn't be
allocating with GFP_KERNEL there.

This still leaves some crypto_alloc_* calls which end up doing
GFP_KERNEL allocations in the crypto code.  Those could probably done at
crypto import time.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
net/sunrpc/auth_gss/gss_krb5_crypto.c
net/sunrpc/auth_gss/gss_krb5_mech.c

index 90115ceefd490f39456edacfca6e711c47929ec0..fb39284ec17419172cba8f7dc7528ce11784041e 100644 (file)
@@ -200,7 +200,7 @@ make_checksum_hmac_md5(struct krb5_ctx *kctx, char *header, int hdrlen,
        if (IS_ERR(hmac_md5))
                goto out_free_md5;
 
-       req = ahash_request_alloc(md5, GFP_KERNEL);
+       req = ahash_request_alloc(md5, GFP_NOFS);
        if (!req)
                goto out_free_hmac_md5;
 
@@ -230,7 +230,7 @@ make_checksum_hmac_md5(struct krb5_ctx *kctx, char *header, int hdrlen,
                goto out;
 
        ahash_request_free(req);
-       req = ahash_request_alloc(hmac_md5, GFP_KERNEL);
+       req = ahash_request_alloc(hmac_md5, GFP_NOFS);
        if (!req)
                goto out_free_hmac_md5;
 
@@ -299,7 +299,7 @@ make_checksum(struct krb5_ctx *kctx, char *header, int hdrlen,
        if (IS_ERR(tfm))
                goto out_free_cksum;
 
-       req = ahash_request_alloc(tfm, GFP_KERNEL);
+       req = ahash_request_alloc(tfm, GFP_NOFS);
        if (!req)
                goto out_free_ahash;
 
@@ -397,7 +397,7 @@ make_checksum_v2(struct krb5_ctx *kctx, char *header, int hdrlen,
                goto out_free_cksum;
        checksumlen = crypto_ahash_digestsize(tfm);
 
-       req = ahash_request_alloc(tfm, GFP_KERNEL);
+       req = ahash_request_alloc(tfm, GFP_NOFS);
        if (!req)
                goto out_free_ahash;
 
@@ -963,7 +963,7 @@ krb5_rc4_setup_seq_key(struct krb5_ctx *kctx, struct crypto_skcipher *cipher,
        }
 
        desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(hmac),
-                      GFP_KERNEL);
+                      GFP_NOFS);
        if (!desc) {
                dprintk("%s: failed to allocate shash descriptor for '%s'\n",
                        __func__, kctx->gk5e->cksum_name);
@@ -1030,7 +1030,7 @@ krb5_rc4_setup_enc_key(struct krb5_ctx *kctx, struct crypto_skcipher *cipher,
        }
 
        desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(hmac),
-                      GFP_KERNEL);
+                      GFP_NOFS);
        if (!desc) {
                dprintk("%s: failed to allocate shash descriptor for '%s'\n",
                        __func__, kctx->gk5e->cksum_name);
index 60595835317afbdd1c2ccc657cd727ed11477a6b..7bb2514aadd9d888469eef0687097e2f5c2ea1e2 100644 (file)
@@ -451,8 +451,7 @@ context_derive_keys_rc4(struct krb5_ctx *ctx)
                goto out_err_free_hmac;
 
 
-       desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(hmac),
-                      GFP_KERNEL);
+       desc = kmalloc(sizeof(*desc) + crypto_shash_descsize(hmac), GFP_NOFS);
        if (!desc) {
                dprintk("%s: failed to allocate hash descriptor for '%s'\n",
                        __func__, ctx->gk5e->cksum_name);