summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJia-Ju Bai <baijiaju1990@gmail.com>2018-01-25 18:06:02 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2018-02-15 23:26:47 +0800
commit918685762c26377a04ca4d7dfa861bd1f87a9fe2 (patch)
tree356cdb583529b67428aed05f9abe1ddb5d341b25
parent4e92247a228c2d2c8a063842aa3dad2b0c9256f3 (diff)
downloadlinux-crypto-918685762c26377a04ca4d7dfa861bd1f87a9fe2.tar.gz
linux-crypto-918685762c26377a04ca4d7dfa861bd1f87a9fe2.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.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index 5c291eed..0e89b545 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;