diff options
-rw-r--r-- | security/keys/key.c | 4 | ||||
-rw-r--r-- | security/keys/keyring.c | 4 |
2 files changed, 2 insertions, 6 deletions
diff --git a/security/keys/key.c b/security/keys/key.c index 0db816f10f85..ac9326c5f1da 100644 --- a/security/keys/key.c +++ b/security/keys/key.c | |||
@@ -290,11 +290,9 @@ struct key *key_alloc(struct key_type *type, const char *desc, | |||
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); |
diff --git a/security/keys/keyring.c b/security/keys/keyring.c index e8d02acc51e7..ad45ce73964b 100644 --- a/security/keys/keyring.c +++ b/security/keys/keyring.c | |||
@@ -706,12 +706,10 @@ int __key_link(struct key *keyring, struct key *key) | |||
706 | BUG_ON(size > PAGE_SIZE); | 706 | BUG_ON(size > PAGE_SIZE); |
707 | 707 | ||
708 | ret = -ENOMEM; | 708 | ret = -ENOMEM; |
709 | nklist = kmalloc(size, GFP_KERNEL); | 709 | nklist = kmemdup(klist, size, GFP_KERNEL); |
710 | if (!nklist) | 710 | if (!nklist) |
711 | goto error2; | 711 | goto error2; |
712 | 712 | ||
713 | memcpy(nklist, klist, size); | ||
714 | |||
715 | /* replace matched key */ | 713 | /* replace matched key */ |
716 | atomic_inc(&key->usage); | 714 | atomic_inc(&key->usage); |
717 | nklist->keys[loop] = key; | 715 | nklist->keys[loop] = key; |