aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/crypto/internal.h
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
commitce8614a312ef750bb60677bb13680cb27d1c284b (patch)
tree842f01d86dc235bcd80c8544969d9fffeaec30c5 /crypto/internal.h
parentcrypto: inside-secure - fix hash when length is a multiple of a block (diff)
downloadwireguard-linux-ce8614a312ef750bb60677bb13680cb27d1c284b.tar.xz
wireguard-linux-ce8614a312ef750bb60677bb13680cb27d1c284b.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/internal.h')
-rw-r--r--crypto/internal.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/crypto/internal.h b/crypto/internal.h
index ae65e5fcaa59..1388af6da85a 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -105,13 +105,13 @@ int crypto_type_has_alg(const char *name, const struct crypto_type *frontend,
static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg)
{
- atomic_inc(&alg->cra_refcnt);
+ refcount_inc(&alg->cra_refcnt);
return alg;
}
static inline void crypto_alg_put(struct crypto_alg *alg)
{
- if (atomic_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy)
+ if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy)
alg->cra_destroy(alg);
}