diff options
author | Reshetova, Elena <elena.reshetova@intel.com> | 2017-07-04 15:53:22 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-05 00:35:18 +0300 |
commit | 850a6212c6fa151076dca045821c75025723bc46 (patch) | |
tree | 05ba27bc5946f2af54946666f19f878375bc29ea /include | |
parent | 88755e9c7c0027fb432ac808326103bc9438d5ea (diff) | |
download | linux-850a6212c6fa151076dca045821c75025723bc46.tar.xz |
net, xfrm: convert xfrm_policy.refcnt from atomic_t to refcount_t
refcount_t type and corresponding API should be
used instead of atomic_t when the variable is used as
a reference counter. This allows to avoid accidental
refcounter overflows that might lead to use-after-free
situations.
Signed-off-by: Elena Reshetova <elena.reshetova@intel.com>
Signed-off-by: Hans Liljestrand <ishkamiel@gmail.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: David Windsor <dwindsor@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/xfrm.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index f5272a275e8f..e1bd1de2d66a 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -560,7 +560,7 @@ struct xfrm_policy { /* This lock only affects elements except for entry. */ rwlock_t lock; - atomic_t refcnt; + refcount_t refcnt; struct timer_list timer; struct flow_cache_object flo; @@ -816,14 +816,14 @@ static inline void xfrm_audit_state_icvfail(struct xfrm_state *x, static inline void xfrm_pol_hold(struct xfrm_policy *policy) { if (likely(policy != NULL)) - atomic_inc(&policy->refcnt); + refcount_inc(&policy->refcnt); } void xfrm_policy_destroy(struct xfrm_policy *policy); static inline void xfrm_pol_put(struct xfrm_policy *policy) { - if (atomic_dec_and_test(&policy->refcnt)) + if (refcount_dec_and_test(&policy->refcnt)) xfrm_policy_destroy(policy); } |