diff options
author | Elena Reshetova <elena.reshetova@intel.com> | 2017-03-31 15:20:49 +0300 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2017-04-03 10:49:06 +1000 |
commit | ddb99e118e37f324a4be65a411bb60ae62795cf9 (patch) | |
tree | 9fecb40084bb937fafa04eaf57d9bc4ae3bcb6a9 /security/keys/internal.h | |
parent | fff292914d3a2f1efd05ca71c2ba72a3c663201e (diff) |
security, keys: convert key_user.usage 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>
Acked-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
Diffstat (limited to 'security/keys/internal.h')
-rw-r--r-- | security/keys/internal.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/security/keys/internal.h b/security/keys/internal.h index a2f4c0abb8d8..6bee06ae026d 100644 --- a/security/keys/internal.h +++ b/security/keys/internal.h @@ -17,6 +17,7 @@ #include <linux/key-type.h> #include <linux/task_work.h> #include <linux/keyctl.h> +#include <linux/refcount.h> struct iovec; @@ -53,7 +54,7 @@ struct key_user { struct rb_node node; struct mutex cons_lock; /* construction initiation lock */ spinlock_t lock; - atomic_t usage; /* for accessing qnkeys & qnbytes */ + refcount_t usage; /* for accessing qnkeys & qnbytes */ atomic_t nkeys; /* number of keys */ atomic_t nikeys; /* number of instantiated keys */ kuid_t uid; |