diff options
author | Reshetova, Elena <elena.reshetova@intel.com> | 2017-06-30 06:07:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-07-01 10:39:07 -0400 |
commit | 6343944bc1050dcec7c959f484ee0fb6928db3be (patch) | |
tree | b6e57e12f2b0c36611563fb349ece8f70e895fd5 /include/net/neighbour.h | |
parent | 9f23743017d11c103b38d2fa1f64674baeca41cd (diff) |
net: convert neigh_params.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/net/neighbour.h')
-rw-r--r-- | include/net/neighbour.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index e5ee739d2b8c..afc39e3a3f7c 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
@@ -77,7 +77,7 @@ struct neigh_parms { | |||
77 | void *sysctl_table; | 77 | void *sysctl_table; |
78 | 78 | ||
79 | int dead; | 79 | int dead; |
80 | atomic_t refcnt; | 80 | refcount_t refcnt; |
81 | struct rcu_head rcu_head; | 81 | struct rcu_head rcu_head; |
82 | 82 | ||
83 | int reachable_time; | 83 | int reachable_time; |
@@ -396,12 +396,12 @@ void neigh_sysctl_unregister(struct neigh_parms *p); | |||
396 | 396 | ||
397 | static inline void __neigh_parms_put(struct neigh_parms *parms) | 397 | static inline void __neigh_parms_put(struct neigh_parms *parms) |
398 | { | 398 | { |
399 | atomic_dec(&parms->refcnt); | 399 | refcount_dec(&parms->refcnt); |
400 | } | 400 | } |
401 | 401 | ||
402 | static inline struct neigh_parms *neigh_parms_clone(struct neigh_parms *parms) | 402 | static inline struct neigh_parms *neigh_parms_clone(struct neigh_parms *parms) |
403 | { | 403 | { |
404 | atomic_inc(&parms->refcnt); | 404 | refcount_inc(&parms->refcnt); |
405 | return parms; | 405 | return parms; |
406 | } | 406 | } |
407 | 407 | ||