summaryrefslogtreecommitdiffstats
path: root/drivers/crypto
diff options
context:
space:
mode:
authorMarkus Elfring <elfring@users.sourceforge.net>2018-03-05 07:50:13 -0500
committerHerbert Xu <herbert@gondor.apana.org.au>2018-03-16 11:33:29 -0400
commit6c51ddddac46ab124a3f10fd17cf34979670c1ce (patch)
treea5fc13cdbc5f27a49eafab015647cd1802797254 /drivers/crypto
parent0ee991be4cdd88587aedbf68cdacd1765f57236a (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.c15
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
368void *psp_copy_user_blob(u64 __user uaddr, u32 len) 368void *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
388e_free:
389 kfree(data);
390 return ERR_PTR(-EFAULT);
391} 378}
392EXPORT_SYMBOL_GPL(psp_copy_user_blob); 379EXPORT_SYMBOL_GPL(psp_copy_user_blob);
393 380