From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 19B58C28CBC for ; Wed, 6 May 2020 06:22:57 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id D018A20714 for ; Wed, 6 May 2020 06:22:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="hTtdKCHW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D018A20714 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=lst.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 6EC8C8E000E; Wed, 6 May 2020 02:22:56 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 648D08E0003; Wed, 6 May 2020 02:22:56 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5117F8E000E; Wed, 6 May 2020 02:22:56 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0041.hostedemail.com [216.40.44.41]) by kanga.kvack.org (Postfix) with ESMTP id 379FA8E0003 for ; Wed, 6 May 2020 02:22:56 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id DEEFA824559C for ; Wed, 6 May 2020 06:22:55 +0000 (UTC) X-FDA: 76785301110.04.look08_198fd1a36f912 X-HE-Tag: look08_198fd1a36f912 X-Filterd-Recvd-Size: 5064 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) by imf28.hostedemail.com (Postfix) with ESMTP for ; Wed, 6 May 2020 06:22:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20170209; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=EAQJbIhcNxaGJ/z6v/Zoshf7uPdts4970BMlGsEt9Aw=; b=hTtdKCHWExrpMpk/IBrvMO/F2F BoWixXY9bRQzar45NG995wihciImWWdGOd12WAx/xcCZ2HtjkMkAOFLcNRVuEqAm3jsyLN3xx5t/7 e1oX8tF61iL4QSpgRfOhN27OoEYcj3V3ArkGnv9F5Wl4JtQScto/5SXEYAamDXlWzHIbfNWAusmQz GiX0272naWfZMaHE25fMN0I4eP/waL6jomKPmKH4jvf8ZG4E6zz+pL3F3M3SJCrTYTwUAgqOKFEfg ihAoP3ORJCzH4VglVYYng8yGporEmhlb6vAZMsD9dA3LARy01g8PC22naMGebYTI6SxPL0HdBywcu 4sHwmEww==; Received: from [2001:4bb8:191:66b6:c70:4a89:bc61:2] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.92.3 #3 (Red Hat Linux)) id 1jWDSG-0006hn-LF; Wed, 06 May 2020 06:22:53 +0000 From: Christoph Hellwig To: x86@kernel.org, Alexei Starovoitov , Daniel Borkmann , Masami Hiramatsu , Linus Torvalds , Andrew Morton Cc: linux-parisc@vger.kernel.org, linux-um@lists.infradead.org, netdev@vger.kernel.org, bpf@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH 09/15] maccess: remove probe_read_common and probe_write_common Date: Wed, 6 May 2020 08:22:17 +0200 Message-Id: <20200506062223.30032-10-hch@lst.de> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200506062223.30032-1-hch@lst.de> References: <20200506062223.30032-1-hch@lst.de> MIME-Version: 1.0 X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Each of the helpers has just two callers, which also different in dealing with kernel or userspace pointers. Just open code the logic in the callers. Signed-off-by: Christoph Hellwig --- mm/maccess.c | 63 ++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 34 deletions(-) diff --git a/mm/maccess.c b/mm/maccess.c index 95f2bf97e5ad7..c18f2dcdb1b88 100644 --- a/mm/maccess.c +++ b/mm/maccess.c @@ -6,30 +6,6 @@ #include #include =20 -static __always_inline long -probe_read_common(void *dst, const void __user *src, size_t size) -{ - long ret; - - pagefault_disable(); - ret =3D __copy_from_user_inatomic(dst, src, size); - pagefault_enable(); - - return ret ? -EFAULT : 0; -} - -static __always_inline long -probe_write_common(void __user *dst, const void *src, size_t size) -{ - long ret; - - pagefault_disable(); - ret =3D __copy_to_user_inatomic(dst, src, size); - pagefault_enable(); - - return ret ? -EFAULT : 0; -} - /** * probe_kernel_read(): safely attempt to read from any location * @dst: pointer to the buffer that shall take the data @@ -69,10 +45,15 @@ long __probe_kernel_read(void *dst, const void *src, = size_t size) mm_segment_t old_fs =3D get_fs(); =20 set_fs(KERNEL_DS); - ret =3D probe_read_common(dst, (__force const void __user *)src, size); + pagefault_disable(); + ret =3D __copy_from_user_inatomic(dst, (__force const void __user *)src= , + size); + pagefault_enable(); set_fs(old_fs); =20 - return ret; + if (ret) + return -EFAULT; + return 0; } EXPORT_SYMBOL_GPL(probe_kernel_read); =20 @@ -91,11 +72,16 @@ long probe_user_read(void *dst, const void __user *sr= c, size_t size) mm_segment_t old_fs =3D get_fs(); =20 set_fs(USER_DS); - if (access_ok(src, size)) - ret =3D probe_read_common(dst, src, size); + if (access_ok(src, size)) { + pagefault_disable(); + ret =3D __copy_from_user_inatomic(dst, src, size); + pagefault_enable(); + } set_fs(old_fs); =20 - return ret; + if (ret) + return -EFAULT; + return 0; } EXPORT_SYMBOL_GPL(probe_user_read); =20 @@ -114,10 +100,14 @@ long probe_kernel_write(void *dst, const void *src,= size_t size) mm_segment_t old_fs =3D get_fs(); =20 set_fs(KERNEL_DS); - ret =3D probe_write_common((__force void __user *)dst, src, size); + pagefault_disable(); + ret =3D __copy_to_user_inatomic((__force void __user *)dst, src, size); + pagefault_enable(); set_fs(old_fs); =20 - return ret; + if (ret) + return -EFAULT; + return 0; } =20 /** @@ -135,11 +125,16 @@ long probe_user_write(void __user *dst, const void = *src, size_t size) mm_segment_t old_fs =3D get_fs(); =20 set_fs(USER_DS); - if (access_ok(dst, size)) - ret =3D probe_write_common(dst, src, size); + if (access_ok(dst, size)) { + pagefault_disable(); + ret =3D __copy_to_user_inatomic(dst, src, size); + pagefault_enable(); + } set_fs(old_fs); =20 - return ret; + if (ret) + return -EFAULT; + return 0; } =20 /** --=20 2.26.2