Revision 92347cfd62c174ab91ad97dd4bfbaa1d4aa28e67 authored by Mark Rutland on 08 June 2017, 13:47:41 UTC, committed by James Morris on 09 June 2017, 03:29:50 UTC
If a key's refcount is dropped to zero between key_lookup() peeking at the refcount and subsequently attempting to increment it, refcount_inc() will see a zero refcount. Here, refcount_inc() will WARN_ONCE(), and will *not* increment the refcount, which will remain zero. Once key_lookup() drops key_serial_lock, it is possible for the key to be freed behind our back. This patch uses refcount_inc_not_zero() to perform the peek and increment atomically. Fixes: fff292914d3a2f1e ("security, keys: convert key.usage from atomic_t to refcount_t") Signed-off-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: David Howells <dhowells@redhat.com> Cc: David Windsor <dwindsor@gmail.com> Cc: Elena Reshetova <elena.reshetova@intel.com> Cc: Hans Liljestrand <ishkamiel@gmail.com> Cc: James Morris <james.l.morris@oracle.com> Cc: Kees Cook <keescook@chromium.org> Cc: Peter Zijlstra <peterz@infradead.org> Signed-off-by: James Morris <james.l.morris@oracle.com>
1 parent 7cbe093
File | Mode | Size |
---|---|---|
.gitignore | -rw-r--r-- | 151 bytes |
Kconfig | -rw-r--r-- | 8.0 KB |
Makefile | -rw-r--r-- | 2.0 KB |
gen_init_cpio.c | -rw-r--r-- | 12.7 KB |
initramfs_data.S | -rw-r--r-- | 1.3 KB |
Computing file changes ...