summaryrefslogtreecommitdiff
path: root/crypto/crypto_user.c
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2017-12-29 10:00:46 -0600
committerHerbert Xu <herbert@gondor.apana.org.au>2018-01-05 18:43:09 +1100
commit2431f0da543e8c93333ed3b3c8ab9a1158404959 (patch)
tree61ec83a2a3b013ba8078d74be682dffa584a8109 /crypto/crypto_user.c
parentaa6bade9aa65fa4e09010f6c744f4727fce612de (diff)
downloadlinux-crypto-2431f0da543e8c93333ed3b3c8ab9a1158404959.tar.gz
linux-crypto-2431f0da543e8c93333ed3b3c8ab9a1158404959.zip
crypto: algapi - convert cra_refcnt to refcount_t
Reference counters should use refcount_t rather than atomic_t, since the refcount_t implementation can prevent overflows, reducing the exploitability of reference leak bugs. crypto_alg.cra_refcount is a reference counter with the usual semantics, so switch it over to refcount_t. Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/crypto_user.c')
-rw-r--r--crypto/crypto_user.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/crypto_user.c b/crypto/crypto_user.c
index 0dbe2be7..5c291eed 100644
--- a/crypto/crypto_user.c
+++ b/crypto/crypto_user.c
@@ -169,7 +169,7 @@ static int crypto_report_one(struct crypto_alg *alg,
ualg->cru_type = 0;
ualg->cru_mask = 0;
ualg->cru_flags = alg->cra_flags;
- ualg->cru_refcnt = atomic_read(&alg->cra_refcnt);
+ ualg->cru_refcnt = refcount_read(&alg->cra_refcnt);
if (nla_put_u32(skb, CRYPTOCFGA_PRIORITY_VAL, alg->cra_priority))
goto nla_put_failure;
@@ -387,7 +387,7 @@ static int crypto_del_alg(struct sk_buff *skb, struct nlmsghdr *nlh,
goto drop_alg;
err = -EBUSY;
- if (atomic_read(&alg->cra_refcnt) > 2)
+ if (refcount_read(&alg->cra_refcnt) > 2)
goto drop_alg;
err = crypto_unregister_instance((struct crypto_instance *)alg);