From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1952336AbdD2BrU (ORCPT ); Fri, 28 Apr 2017 21:47:20 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:34124 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1952203AbdD2BrF (ORCPT ); Fri, 28 Apr 2017 21:47:05 -0400 From: Geliang Tang To: Kees Cook , Anton Vorontsov , Colin Cross , Tony Luck Cc: Geliang Tang , linux-kernel@vger.kernel.org Subject: [PATCH] pstore: use memdup_user Date: Sat, 29 Apr 2017 09:45:16 +0800 Message-Id: <8f344463f47f40c462ad3b41ef1b0daee1ddf2d2.1493382464.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 Use memdup_user() helper instead of open-coding to simplify the code. Signed-off-by: Geliang Tang --- fs/pstore/platform.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/fs/pstore/platform.c b/fs/pstore/platform.c index 43b3ca5..903e0fe 100644 --- a/fs/pstore/platform.c +++ b/fs/pstore/platform.c @@ -640,19 +640,16 @@ static int pstore_write_user_compat(struct pstore_record *record, if (record->buf) return -EINVAL; - record->buf = kmalloc(record->size, GFP_KERNEL); - if (!record->buf) - return -ENOMEM; - - if (unlikely(copy_from_user(record->buf, buf, record->size))) { - ret = -EFAULT; + record->buf = memdup_user(buf, record->size); + if (unlikely(IS_ERR(record->buf))) { + ret = PTR_ERR(record->buf); goto out; } ret = record->psi->write(record); -out: kfree(record->buf); +out: record->buf = NULL; return unlikely(ret < 0) ? ret : record->size; -- 2.9.3