From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751349AbdEMDQS (ORCPT ); Fri, 12 May 2017 23:16:18 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:33429 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751204AbdEMDQP (ORCPT ); Fri, 12 May 2017 23:16:15 -0400 From: Geliang Tang To: Ulf Hansson , Linus Walleij , Adrian Hunter , Shawn Lin , Jens Axboe Cc: Geliang Tang , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] mmc: block: use memdup_user Date: Sat, 13 May 2017 11:15:58 +0800 Message-Id: X-Mailer: git-send-email 2.11.0 In-Reply-To: <908fa521decaf3703e172c3734c0d498741f3ddb.1494580404.git.geliangtang@gmail.com> References: <908fa521decaf3703e172c3734c0d498741f3ddb.1494580404.git.geliangtang@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Use memdup_user() helper instead of open-coding to simplify the code. Signed-off-by: Geliang Tang --- drivers/mmc/core/block.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 8273b07..47ccb2a 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -342,21 +342,15 @@ static struct mmc_blk_ioc_data *mmc_blk_ioctl_copy_from_user( return idata; } - idata->buf = kmalloc(idata->buf_bytes, GFP_KERNEL); - if (!idata->buf) { - err = -ENOMEM; + idata->buf = memdup_user((void __user *)(unsigned long) + idata->ic.data_ptr, idata->buf_bytes); + if (IS_ERR(idata->buf)) { + err = PTR_ERR(idata->buf); goto idata_err; } - if (copy_from_user(idata->buf, (void __user *)(unsigned long) - idata->ic.data_ptr, idata->buf_bytes)) { - err = -EFAULT; - goto copy_err; - } - return idata; -copy_err: kfree(idata->buf); idata_err: kfree(idata); -- 2.9.3