Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1952013AbdD2Bqm (ORCPT ); Fri, 28 Apr 2017 21:46:42 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:33725 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1951885AbdD2Bqe (ORCPT ); Fri, 28 Apr 2017 21:46:34 -0400 From: Geliang Tang To: Jiri Kosina , Jens Axboe , Mike Christie Cc: Geliang Tang , linux-kernel@vger.kernel.org Subject: [PATCH] floppy: use memdup_user Date: Sat, 29 Apr 2017 09:45:12 +0800 Message-Id: <766667961502ac9212d49de0c37a711660714460.1493381597.git.geliangtang@gmail.com> 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: 941 Lines: 33 Use memdup_user() helper instead of open-coding to simplify the code. Signed-off-by: Geliang Tang --- drivers/block/floppy.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 60d4c76..167426c 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c @@ -3121,16 +3121,13 @@ static int raw_cmd_copyin(int cmd, void __user *param, *rcmd = NULL; loop: - ptr = kmalloc(sizeof(struct floppy_raw_cmd), GFP_KERNEL); - if (!ptr) - return -ENOMEM; + ptr = memdup_user(param, sizeof(*ptr)); + if (IS_ERR(ptr)) + return PTR_ERR(ptr); *rcmd = ptr; - ret = copy_from_user(ptr, param, sizeof(*ptr)); ptr->next = NULL; ptr->buffer_length = 0; ptr->kernel_data = NULL; - if (ret) - return -EFAULT; param += sizeof(struct floppy_raw_cmd); if (ptr->cmd_count > 33) /* the command may now also take up the space -- 2.9.3