aboutsummaryrefslogtreecommitdiffstats
path: root/net/lapb
diff options
context:
space:
mode:
authorReshetova, Elena <elena.reshetova@intel.com>2017-07-04 08:53:08 -0400
committerDavid S. Miller <davem@davemloft.net>2017-07-04 17:35:16 -0400
commit0408c58be5a475c99b271f08d85859f7b59ec767 (patch)
tree100c31c9fab2ae3b9fee699c83fa798cfbb0baad /net/lapb
parent7b9364050246bd4c24b36b71c8990b2922dcc027 (diff)
net, lapb: convert lapb_cb.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 'net/lapb')
-rw-r--r--net/lapb/lapb_iface.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/net/lapb/lapb_iface.c b/net/lapb/lapb_iface.c
index b50b64ac8815..e15314e3b464 100644
--- a/net/lapb/lapb_iface.c
+++ b/net/lapb/lapb_iface.c
@@ -54,12 +54,12 @@ static void lapb_free_cb(struct lapb_cb *lapb)
54 54
55static __inline__ void lapb_hold(struct lapb_cb *lapb) 55static __inline__ void lapb_hold(struct lapb_cb *lapb)
56{ 56{
57 atomic_inc(&lapb->refcnt); 57 refcount_inc(&lapb->refcnt);
58} 58}
59 59
60static __inline__ void lapb_put(struct lapb_cb *lapb) 60static __inline__ void lapb_put(struct lapb_cb *lapb)
61{ 61{
62 if (atomic_dec_and_test(&lapb->refcnt)) 62 if (refcount_dec_and_test(&lapb->refcnt))
63 lapb_free_cb(lapb); 63 lapb_free_cb(lapb);
64} 64}
65 65
@@ -136,7 +136,7 @@ static struct lapb_cb *lapb_create_cb(void)
136 lapb->mode = LAPB_DEFAULT_MODE; 136 lapb->mode = LAPB_DEFAULT_MODE;
137 lapb->window = LAPB_DEFAULT_WINDOW; 137 lapb->window = LAPB_DEFAULT_WINDOW;
138 lapb->state = LAPB_STATE_0; 138 lapb->state = LAPB_STATE_0;
139 atomic_set(&lapb->refcnt, 1); 139 refcount_set(&lapb->refcnt, 1);
140out: 140out:
141 return lapb; 141 return lapb;
142} 142}