diff options
author | Jia-Ju Bai <baijiaju1990@gmail.com> | 2018-01-25 18:06:02 +0800 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-02-15 23:26:47 +0800 |
commit | 9a69b7ae79d886e27db5164af91fbd75a0e0e89d (patch) | |
tree | c6c1df0d615b24ecdd75099cb43b130697698220 | |
parent | 1ca2809897155f1adc43e4859b4a3582e235c09a (diff) | |
download | linux-stable-9a69b7ae79d886e27db5164af91fbd75a0e0e89d.tar.gz linux-stable-9a69b7ae79d886e27db5164af91fbd75a0e0e89d.tar.bz2 linux-stable-9a69b7ae79d886e27db5164af91fbd75a0e0e89d.zip |
crypto: user - Replace GFP_ATOMIC with GFP_KERNEL in crypto_report
After checking all possible call chains to crypto_report here,
my tool finds that crypto_report is never called in atomic context.
And crypto_report calls crypto_alg_match which calls down_read,
thus it proves again that crypto_report can call functions which may sleep.
Thus GFP_ATOMIC is not necessary, and it can be replaced with GFP_KERNEL.
This is found by a static analysis tool named DCNS written by myself.
Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r-- | crypto/crypto_user.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c index 5c291eedaa70..0e89b5457cab 100644 --- a/crypto/crypto_user.c +++ b/crypto/crypto_user.c @@ -271,7 +271,7 @@ static int crypto_report(struct sk_buff *in_skb, struct nlmsghdr *in_nlh, return -ENOENT; err = -ENOMEM; - skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); + skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); if (!skb) goto drop_alg; |