Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1602558

[PATCH 16/17] net: convert netlbl_lsm_cache.refcount from atomic_t to refcount_t

From Elena Reshetova <elena.reshetova@intel.com>
Newsgroups linux.kernel
Subject [PATCH 16/17] net: convert netlbl_lsm_cache.refcount from atomic_t to refcount_t
Date 2017-03-16 16:40 +0100
Message-ID <tlFFp-lI-35@gated-at.bofh.it> (permalink)
References <tlFvH-gv-7@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


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>
---
 include/net/netlabel.h | 8 ++++----
 net/ipv4/cipso_ipv4.c  | 4 ++--
 net/ipv6/calipso.c     | 4 ++--
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/include/net/netlabel.h b/include/net/netlabel.h
index efe9806..72d6435 100644
--- a/include/net/netlabel.h
+++ b/include/net/netlabel.h
@@ -37,7 +37,7 @@
 #include <linux/in6.h>
 #include <net/netlink.h>
 #include <net/request_sock.h>
-#include <linux/atomic.h>
+#include <linux/refcount.h>
 
 struct cipso_v4_doi;
 struct calipso_doi;
@@ -136,7 +136,7 @@ struct netlbl_audit {
  *
  */
 struct netlbl_lsm_cache {
-	atomic_t refcount;
+	refcount_t refcount;
 	void (*free) (const void *data);
 	void *data;
 };
@@ -295,7 +295,7 @@ static inline struct netlbl_lsm_cache *netlbl_secattr_cache_alloc(gfp_t flags)
 
 	cache = kzalloc(sizeof(*cache), flags);
 	if (cache)
-		atomic_set(&cache->refcount, 1);
+		refcount_set(&cache->refcount, 1);
 	return cache;
 }
 
@@ -309,7 +309,7 @@ static inline struct netlbl_lsm_cache *netlbl_secattr_cache_alloc(gfp_t flags)
  */
 static inline void netlbl_secattr_cache_free(struct netlbl_lsm_cache *cache)
 {
-	if (!atomic_dec_and_test(&cache->refcount))
+	if (!refcount_dec_and_test(&cache->refcount))
 		return;
 
 	if (cache->free)
diff --git a/net/ipv4/cipso_ipv4.c b/net/ipv4/cipso_ipv4.c
index ae20616..c204477 100644
--- a/net/ipv4/cipso_ipv4.c
+++ b/net/ipv4/cipso_ipv4.c
@@ -265,7 +265,7 @@ static int cipso_v4_cache_check(const unsigned char *key,
 		    entry->key_len == key_len &&
 		    memcmp(entry->key, key, key_len) == 0) {
 			entry->activity += 1;
-			atomic_inc(&entry->lsm_data->refcount);
+			refcount_inc(&entry->lsm_data->refcount);
 			secattr->cache = entry->lsm_data;
 			secattr->flags |= NETLBL_SECATTR_CACHE;
 			secattr->type = NETLBL_NLTYPE_CIPSOV4;
@@ -332,7 +332,7 @@ int cipso_v4_cache_add(const unsigned char *cipso_ptr,
 	}
 	entry->key_len = cipso_ptr_len;
 	entry->hash = cipso_v4_map_cache_hash(cipso_ptr, cipso_ptr_len);
-	atomic_inc(&secattr->cache->refcount);
+	refcount_inc(&secattr->cache->refcount);
 	entry->lsm_data = secattr->cache;
 
 	bkt = entry->hash & (CIPSO_V4_CACHE_BUCKETS - 1);
diff --git a/net/ipv6/calipso.c b/net/ipv6/calipso.c
index 37ac9de..6c6ecf1 100644
--- a/net/ipv6/calipso.c
+++ b/net/ipv6/calipso.c
@@ -227,7 +227,7 @@ static int calipso_cache_check(const unsigned char *key,
 		    entry->key_len == key_len &&
 		    memcmp(entry->key, key, key_len) == 0) {
 			entry->activity += 1;
-			atomic_inc(&entry->lsm_data->refcount);
+			refcount_inc(&entry->lsm_data->refcount);
 			secattr->cache = entry->lsm_data;
 			secattr->flags |= NETLBL_SECATTR_CACHE;
 			secattr->type = NETLBL_NLTYPE_CALIPSO;
@@ -296,7 +296,7 @@ static int calipso_cache_add(const unsigned char *calipso_ptr,
 	}
 	entry->key_len = calipso_ptr_len;
 	entry->hash = calipso_map_cache_hash(calipso_ptr, calipso_ptr_len);
-	atomic_inc(&secattr->cache->refcount);
+	refcount_inc(&secattr->cache->refcount);
 	entry->lsm_data = secattr->cache;
 
 	bkt = entry->hash & (CALIPSO_CACHE_BUCKETS - 1);
-- 
2.7.4

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 00/17] net subsystem refcount conversions Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:30 +0100
  [PATCH 02/17] net: convert neigh_params.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:30 +0100
  [PATCH 10/17] net: convert in_device.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 12/17] net: convert unix_address.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 14/17] net: convert inet_frag_queue.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 01/17] net: convert neighbour.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 11/17] net: convert netpoll_info.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
    Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-16 18:00 +0100
      Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-16 18:40 +0100
        Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t David Miller <davem@davemloft.net> - 2017-03-16 20:20 +0100
          RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t "Reshetova, Elena" <elena.reshetova@intel.com> - 2017-03-17 08:50 +0100
            Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-17 17:20 +0100
              Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-18 18:00 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t David Miller <davem@davemloft.net> - 2017-03-19 02:40 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 11:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 14:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 14:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 16:00 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 17:20 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 17:40 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-20 16:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 16:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-21 21:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-21 22:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t David Miller <davem@davemloft.net> - 2017-03-21 23:40 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-22 01:00 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 03:10 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 13:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 14:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 15:40 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 16:00 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 16:10 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Eric Dumazet <eric.dumazet@gmail.com> - 2017-03-22 16:30 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 18:00 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to refcount_t Kees Cook <keescook@chromium.org> - 2017-03-22 20:10 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-22 14:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-20 15:50 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Herbert Xu <herbert@gondor.apana.org.au> - 2017-03-20 14:50 +0100
                RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t David Laight <David.Laight@ACULAB.COM> - 2017-03-20 15:20 +0100
                Re: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t Peter Zijlstra <peterz@infradead.org> - 2017-03-20 15:30 +0100
                RE: [PATCH 07/17] net: convert sock.sk_refcnt from atomic_t to  refcount_t David Laight <David.Laight@ACULAB.COM> - 2017-03-20 16:10 +0100
  [PATCH 05/17] net: convert sk_buff_fclones.fclone_ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 15/17] net: convert net.passive from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 16/17] net: convert netlbl_lsm_cache.refcount from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 09/17] net: convert ip_mc_list.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 04/17] net: convert sk_buff.users from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
    Re: [PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to  refcount_t Daniel Borkmann <daniel@iogearbox.net> - 2017-03-16 17:10 +0100
      RE: [PATCH 08/17] net: convert sk_filter.refcnt from atomic_t to  refcount_t "Reshetova, Elena" <elena.reshetova@intel.com> - 2017-03-17 09:20 +0100
  [PATCH 17/17] net: convert packet_fanout.sk_ref from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 06/17] net: convert sock.sk_wmem_alloc from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100
  [PATCH 13/17] net: convert fib_rule.refcnt from atomic_t to refcount_t Elena Reshetova <elena.reshetova@intel.com> - 2017-03-16 16:40 +0100

csiph-web