Replace kmalloc() followed by copy_from_user() with memdup_user() to improve and simplify sgx_ioc_enclave_create().
No functional changes intended. Signed-off-by: Thorsten Blum <thorsten.b...@linux.dev> --- arch/x86/kernel/cpu/sgx/ioctl.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c index 66f1efa16fbb..e99fc38f1273 100644 --- a/arch/x86/kernel/cpu/sgx/ioctl.c +++ b/arch/x86/kernel/cpu/sgx/ioctl.c @@ -164,15 +164,11 @@ static long sgx_ioc_enclave_create(struct sgx_encl *encl, void __user *arg) if (copy_from_user(&create_arg, arg, sizeof(create_arg))) return -EFAULT; - secs = kmalloc(PAGE_SIZE, GFP_KERNEL); - if (!secs) - return -ENOMEM; - - if (copy_from_user(secs, (void __user *)create_arg.src, PAGE_SIZE)) - ret = -EFAULT; - else - ret = sgx_encl_create(encl, secs); + secs = memdup_user((void __user *)create_arg.src, PAGE_SIZE); + if (IS_ERR(secs)) + return PTR_ERR(secs); + ret = sgx_encl_create(encl, secs); kfree(secs); return ret; } -- 2.51.0