Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S376293AbdD2BrZ (ORCPT ); Fri, 28 Apr 2017 21:47:25 -0400 Received: from mail-io0-f194.google.com ([209.85.223.194]:32785 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1952292AbdD2BrQ (ORCPT ); Fri, 28 Apr 2017 21:47:16 -0400 From: Geliang Tang To: Jens Axboe , Arnd Bergmann , Hannes Reinecke , Johannes Thumshirn Cc: Geliang Tang , linux-kernel@vger.kernel.org Subject: [PATCH] skd_main: use memdup_user Date: Sat, 29 Apr 2017 09:45:17 +0800 Message-Id: X-Mailer: git-send-email 2.11.0 In-Reply-To: <4db2a0ba17dc68d7bcfbd7d47b0eb22ad9a220c2.1493381463.git.geliangtang@gmail.com> References: <4db2a0ba17dc68d7bcfbd7d47b0eb22ad9a220c2.1493381463.git.geliangtang@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1262 Lines: 41 Use memdup_user() helper instead of open-coding to simplify the code. Signed-off-by: Geliang Tang --- drivers/block/skd_main.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c index 27833e4..6b3cdd2 100644 --- a/drivers/block/skd_main.c +++ b/drivers/block/skd_main.c @@ -1394,22 +1394,16 @@ static int skd_sg_io_get_and_check_args(struct skd_device *skdev, uint nbytes = sizeof(*iov) * sgp->iovec_count; size_t iov_data_len; - iov = kmalloc(nbytes, GFP_KERNEL); - if (iov == NULL) { - pr_debug("%s:%s:%d alloc iovec failed %d\n", + iov = memdup_user(sgp->dxferp, nbytes); + if (IS_ERR(iov)) { + pr_debug("%s:%s:%d memdup_user iovec failed %d %p\n", skdev->name, __func__, __LINE__, - sgp->iovec_count); - return -ENOMEM; + sgp->iovec_count, sgp->dxferp); + return PTR_ERR(iov); } sksgio->iov = iov; sksgio->iovcnt = sgp->iovec_count; - if (copy_from_user(iov, sgp->dxferp, nbytes)) { - pr_debug("%s:%s:%d copy_from_user iovec failed %p\n", - skdev->name, __func__, __LINE__, sgp->dxferp); - return -EFAULT; - } - /* * Sum up the vecs, making sure they don't overflow */ -- 2.9.3