From: Elena Reshetova <elena.reshetova@intel.com> To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, davem@davemloft.net, linux-x25@vger.kernel.org, linux-sctp@vger.kernel.org, vyasevich@gmail.com, nhorman@tuxdriver.com, linux-hams@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, zyan@redhat.com, sage@redhat.com, bfields@fieldses.org, jlayton@poochiereds.net, steffen.klassert@secunet.com, herbert@gondor.apana.org.au, santosh.shilimkar@oracle.com, jreuter@yaina.de, ralf@linux-mips.org, peterz@infradead.org, keescook@chromium.org, Elena Reshetova <elena.reshetova@intel.com>, Hans Liljestrand <ishkamiel@gmail.com>, David Windsor <dwindsor@gmail.com> Subject: [PATCH 16/23] net, sctp: convert sctp_auth_bytes.refcnt from atomic_t to refcount_t Date: Fri, 17 Mar 2017 14:10:39 +0200 [thread overview] Message-ID: <1489752646-8749-17-git-send-email-elena.reshetova@intel.com> (raw) In-Reply-To: <1489752646-8749-1-git-send-email-elena.reshetova@intel.com> 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/sctp/auth.h | 5 +++-- net/sctp/auth.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/net/sctp/auth.h b/include/net/sctp/auth.h index 9b9fb12..328fccc 100644 --- a/include/net/sctp/auth.h +++ b/include/net/sctp/auth.h @@ -31,6 +31,7 @@ #define __sctp_auth_h__ #include <linux/list.h> +#include <linux/refcount.h> struct sctp_endpoint; struct sctp_association; @@ -53,7 +54,7 @@ struct sctp_hmac { * over SCTP-AUTH */ struct sctp_auth_bytes { - atomic_t refcnt; + refcount_t refcnt; __u32 len; __u8 data[]; }; @@ -76,7 +77,7 @@ static inline void sctp_auth_key_hold(struct sctp_auth_bytes *key) if (!key) return; - atomic_inc(&key->refcnt); + refcount_inc(&key->refcnt); } void sctp_auth_key_put(struct sctp_auth_bytes *key); diff --git a/net/sctp/auth.c b/net/sctp/auth.c index f99d485..b6c98fe 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c @@ -63,7 +63,7 @@ void sctp_auth_key_put(struct sctp_auth_bytes *key) if (!key) return; - if (atomic_dec_and_test(&key->refcnt)) { + if (refcount_dec_and_test(&key->refcnt)) { kzfree(key); SCTP_DBG_OBJCNT_DEC(keys); } @@ -84,7 +84,7 @@ static struct sctp_auth_bytes *sctp_auth_create_key(__u32 key_len, gfp_t gfp) return NULL; key->len = key_len; - atomic_set(&key->refcnt, 1); + refcount_set(&key->refcnt, 1); SCTP_DBG_OBJCNT_INC(keys); return key; -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Elena Reshetova <elena.reshetova@intel.com> To: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, davem@davemloft.net, linux-x25@vger.kernel.org, linux-sctp@vger.kernel.org, vyasevich@gmail.com, nhorman@tuxdriver.com, linux-hams@vger.kernel.org, linux-nfs@vger.kernel.org, ceph-devel@vger.kernel.org, zyan@redhat.com, sage@redhat.com, bfields@fieldses.org, jlayton@poochiereds.net, steffen.klassert@secunet.com, herbert@gondor.apana.org.au, santosh.shilimkar@oracle.com, jreuter@yaina.de, ralf@linux-mips.org, peterz@infradead.org, keescook@chromium.org, Elena Reshetova <elena.reshetova@intel.com>, Hans Liljestrand <ishkamiel@gmail.com>, David Windsor <dwindsor@gmail.com> Subject: [PATCH 16/23] net, sctp: convert sctp_auth_bytes.refcnt from atomic_t to refcount_t Date: Fri, 17 Mar 2017 12:10:39 +0000 [thread overview] Message-ID: <1489752646-8749-17-git-send-email-elena.reshetova@intel.com> (raw) In-Reply-To: <1489752646-8749-1-git-send-email-elena.reshetova@intel.com> 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/sctp/auth.h | 5 +++-- net/sctp/auth.c | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/include/net/sctp/auth.h b/include/net/sctp/auth.h index 9b9fb12..328fccc 100644 --- a/include/net/sctp/auth.h +++ b/include/net/sctp/auth.h @@ -31,6 +31,7 @@ #define __sctp_auth_h__ #include <linux/list.h> +#include <linux/refcount.h> struct sctp_endpoint; struct sctp_association; @@ -53,7 +54,7 @@ struct sctp_hmac { * over SCTP-AUTH */ struct sctp_auth_bytes { - atomic_t refcnt; + refcount_t refcnt; __u32 len; __u8 data[]; }; @@ -76,7 +77,7 @@ static inline void sctp_auth_key_hold(struct sctp_auth_bytes *key) if (!key) return; - atomic_inc(&key->refcnt); + refcount_inc(&key->refcnt); } void sctp_auth_key_put(struct sctp_auth_bytes *key); diff --git a/net/sctp/auth.c b/net/sctp/auth.c index f99d485..b6c98fe 100644 --- a/net/sctp/auth.c +++ b/net/sctp/auth.c @@ -63,7 +63,7 @@ void sctp_auth_key_put(struct sctp_auth_bytes *key) if (!key) return; - if (atomic_dec_and_test(&key->refcnt)) { + if (refcount_dec_and_test(&key->refcnt)) { kzfree(key); SCTP_DBG_OBJCNT_DEC(keys); } @@ -84,7 +84,7 @@ static struct sctp_auth_bytes *sctp_auth_create_key(__u32 key_len, gfp_t gfp) return NULL; key->len = key_len; - atomic_set(&key->refcnt, 1); + refcount_set(&key->refcnt, 1); SCTP_DBG_OBJCNT_INC(keys); return key; -- 2.7.4
next prev parent reply other threads:[~2017-03-17 12:10 UTC|newest] Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-03-17 12:10 [PATCH 00/23] various networking refcount conversions, part 2 Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 01/23] net, sunrpc: convert rpc_cred.cr_count from atomic_t to refcount_t Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova [not found] ` <1489752646-8749-2-git-send-email-elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2017-03-17 12:50 ` Trond Myklebust 2017-03-17 12:50 ` Trond Myklebust 2017-03-17 12:50 ` Trond Myklebust 2017-03-17 12:50 ` Trond Myklebust 2017-03-17 12:50 ` Trond Myklebust 2017-03-17 13:02 ` Jeff Layton 2017-03-17 13:02 ` Jeff Layton 2017-03-17 13:02 ` Jeff Layton [not found] ` <1489755736.2810.10.camel-vpEMnDpepFuMZCB2o+C8xQ@public.gmane.org> 2017-03-17 14:28 ` Trond Myklebust 2017-03-17 14:28 ` Trond Myklebust 2017-03-17 14:28 ` Trond Myklebust 2017-03-17 14:28 ` Trond Myklebust 2017-03-20 16:15 ` Reshetova, Elena 2017-03-20 16:15 ` Reshetova, Elena 2017-03-20 16:15 ` Reshetova, Elena 2017-03-20 16:15 ` Reshetova, Elena 2017-03-17 12:10 ` [PATCH 02/23] net, sunrpc: convert gss_cl_ctx.count " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 03/23] net, sunrpc: convert gss_upcall_msg.count " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 04/23] net, ceph: convert ceph_snap_context.nref " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-24 13:20 ` Ilya Dryomov 2017-03-24 13:20 ` Ilya Dryomov 2017-03-17 12:10 ` [PATCH 05/23] net, ceph: convert ceph_osd.o_ref " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova [not found] ` <1489752646-8749-6-git-send-email-elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2017-03-24 13:49 ` Ilya Dryomov 2017-03-24 13:49 ` Ilya Dryomov 2017-03-24 13:49 ` Ilya Dryomov 2017-03-17 12:10 ` [PATCH 06/23] net, ceph: convert ceph_pagelist.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova [not found] ` <1489752646-8749-7-git-send-email-elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2017-03-24 13:49 ` Ilya Dryomov 2017-03-24 13:49 ` Ilya Dryomov 2017-03-24 13:49 ` Ilya Dryomov 2017-03-17 12:10 ` [PATCH 07/23] net, rds: convert rds_ib_device.refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 08/23] net, rds: convert rds_incoming.i_refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 09/23] net, rds: convert rds_mr.r_refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 11/23] net, x25: convert x25_route.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 12/23] net, x25: convert x25_neigh.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 15/23] net, xfrm: convert sec_path.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova [this message] 2017-03-17 12:10 ` [PATCH 16/23] net, sctp: convert sctp_auth_bytes.refcnt " Elena Reshetova 2017-03-17 12:10 ` [PATCH 17/23] net, sctp: convert sctp_datamsg.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 20/23] net, sctp: convert sctp_ep_common.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova [not found] ` <1489752646-8749-1-git-send-email-elena.reshetova-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> 2017-03-17 12:10 ` [PATCH 10/23] net, rds: convert rds_message.m_refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 13/23] net, xfrm: convert xfrm_state.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 14/23] net, xfrm: convert xfrm_policy.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 18/23] net, sctp: convert sctp_chunk.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 19/23] net, sctp: convert sctp_transport.refcnt " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 21/23] net, ax25: convert ax25_uid_assoc.refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 22/23] net, ax25: convert ax25_route.refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova 2017-03-17 12:10 ` [PATCH 23/23] net, ax25: convert ax25_cb.refcount " Elena Reshetova 2017-03-17 12:10 ` Elena Reshetova
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1489752646-8749-17-git-send-email-elena.reshetova@intel.com \ --to=elena.reshetova@intel.com \ --cc=bfields@fieldses.org \ --cc=ceph-devel@vger.kernel.org \ --cc=davem@davemloft.net \ --cc=dwindsor@gmail.com \ --cc=herbert@gondor.apana.org.au \ --cc=ishkamiel@gmail.com \ --cc=jlayton@poochiereds.net \ --cc=jreuter@yaina.de \ --cc=keescook@chromium.org \ --cc=linux-hams@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nfs@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=linux-sctp@vger.kernel.org \ --cc=linux-x25@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=nhorman@tuxdriver.com \ --cc=peterz@infradead.org \ --cc=ralf@linux-mips.org \ --cc=sage@redhat.com \ --cc=santosh.shilimkar@oracle.com \ --cc=steffen.klassert@secunet.com \ --cc=vyasevich@gmail.com \ --cc=zyan@redhat.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.