diff options
Diffstat (limited to 'security/keys/key.c')
-rw-r--r-- | security/keys/key.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/security/keys/key.c b/security/keys/key.c index 80de8c3e9cc3..ac9326c5f1da 100644 --- a/security/keys/key.c +++ b/security/keys/key.c | |||
@@ -20,7 +20,7 @@ | |||
20 | #include <linux/err.h> | 20 | #include <linux/err.h> |
21 | #include "internal.h" | 21 | #include "internal.h" |
22 | 22 | ||
23 | static kmem_cache_t *key_jar; | 23 | static struct kmem_cache *key_jar; |
24 | struct rb_root key_serial_tree; /* tree of keys indexed by serial */ | 24 | struct rb_root key_serial_tree; /* tree of keys indexed by serial */ |
25 | DEFINE_SPINLOCK(key_serial_lock); | 25 | DEFINE_SPINLOCK(key_serial_lock); |
26 | 26 | ||
@@ -30,8 +30,8 @@ DEFINE_SPINLOCK(key_user_lock); | |||
30 | static LIST_HEAD(key_types_list); | 30 | static LIST_HEAD(key_types_list); |
31 | static DECLARE_RWSEM(key_types_sem); | 31 | static DECLARE_RWSEM(key_types_sem); |
32 | 32 | ||
33 | static void key_cleanup(void *data); | 33 | static void key_cleanup(struct work_struct *work); |
34 | static DECLARE_WORK(key_cleanup_task, key_cleanup, NULL); | 34 | static DECLARE_WORK(key_cleanup_task, key_cleanup); |
35 | 35 | ||
36 | /* we serialise key instantiation and link */ | 36 | /* we serialise key instantiation and link */ |
37 | DECLARE_RWSEM(key_construction_sem); | 37 | DECLARE_RWSEM(key_construction_sem); |
@@ -285,16 +285,14 @@ struct key *key_alloc(struct key_type *type, const char *desc, | |||
285 | } | 285 | } |
286 | 286 | ||
287 | /* allocate and initialise the key and its description */ | 287 | /* allocate and initialise the key and its description */ |
288 | key = kmem_cache_alloc(key_jar, SLAB_KERNEL); | 288 | key = kmem_cache_alloc(key_jar, GFP_KERNEL); |
289 | if (!key) | 289 | if (!key) |
290 | goto no_memory_2; | 290 | goto no_memory_2; |
291 | 291 | ||
292 | if (desc) { | 292 | if (desc) { |
293 | key->description = kmalloc(desclen, GFP_KERNEL); | 293 | key->description = kmemdup(desc, desclen, GFP_KERNEL); |
294 | if (!key->description) | 294 | if (!key->description) |
295 | goto no_memory_3; | 295 | goto no_memory_3; |
296 | |||
297 | memcpy(key->description, desc, desclen); | ||
298 | } | 296 | } |
299 | 297 | ||
300 | atomic_set(&key->usage, 1); | 298 | atomic_set(&key->usage, 1); |
@@ -552,7 +550,7 @@ EXPORT_SYMBOL(key_negate_and_link); | |||
552 | * do cleaning up in process context so that we don't have to disable | 550 | * do cleaning up in process context so that we don't have to disable |
553 | * interrupts all over the place | 551 | * interrupts all over the place |
554 | */ | 552 | */ |
555 | static void key_cleanup(void *data) | 553 | static void key_cleanup(struct work_struct *work) |
556 | { | 554 | { |
557 | struct rb_node *_n; | 555 | struct rb_node *_n; |
558 | struct key *key; | 556 | struct key *key; |