diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2018-03-05 07:50:13 -0500 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-03-16 11:33:29 -0400 |
commit | 6c51ddddac46ab124a3f10fd17cf34979670c1ce (patch) | |
tree | a5fc13cdbc5f27a49eafab015647cd1802797254 /drivers/crypto | |
parent | 0ee991be4cdd88587aedbf68cdacd1765f57236a (diff) |
crypto: ccp - Use memdup_user() rather than duplicating its implementation
Reuse existing functionality from memdup_user() instead of keeping
duplicate source code.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Acked-by: Gary R Hook <gary.hook@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto')
-rw-r--r-- | drivers/crypto/ccp/psp-dev.c | 15 |
1 files changed, 1 insertions, 14 deletions
diff --git a/drivers/crypto/ccp/psp-dev.c b/drivers/crypto/ccp/psp-dev.c index b3afb6cc9d72..d95ec526587a 100644 --- a/drivers/crypto/ccp/psp-dev.c +++ b/drivers/crypto/ccp/psp-dev.c | |||
@@ -367,8 +367,6 @@ e_free: | |||
367 | 367 | ||
368 | void *psp_copy_user_blob(u64 __user uaddr, u32 len) | 368 | void *psp_copy_user_blob(u64 __user uaddr, u32 len) |
369 | { | 369 | { |
370 | void *data; | ||
371 | |||
372 | if (!uaddr || !len) | 370 | if (!uaddr || !len) |
373 | return ERR_PTR(-EINVAL); | 371 | return ERR_PTR(-EINVAL); |
374 | 372 | ||
@@ -376,18 +374,7 @@ void *psp_copy_user_blob(u64 __user uaddr, u32 len) | |||
376 | if (len > SEV_FW_BLOB_MAX_SIZE) | 374 | if (len > SEV_FW_BLOB_MAX_SIZE) |
377 | return ERR_PTR(-EINVAL); | 375 | return ERR_PTR(-EINVAL); |
378 | 376 | ||
379 | data = kmalloc(len, GFP_KERNEL); | 377 | return memdup_user((void __user *)(uintptr_t)uaddr, len); |
380 | if (!data) | ||
381 | return ERR_PTR(-ENOMEM); | ||
382 | |||
383 | if (copy_from_user(data, (void __user *)(uintptr_t)uaddr, len)) | ||
384 | goto e_free; | ||
385 | |||
386 | return data; | ||
387 | |||
388 | e_free: | ||
389 | kfree(data); | ||
390 | return ERR_PTR(-EFAULT); | ||
391 | } | 378 | } |
392 | EXPORT_SYMBOL_GPL(psp_copy_user_blob); | 379 | EXPORT_SYMBOL_GPL(psp_copy_user_blob); |
393 | 380 | ||