Received: by 2002:a05:6902:102b:0:0:0:0 with SMTP id x11csp1273932ybt; Tue, 7 Jul 2020 11:33:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwlUXe9psz9TZA8nMVKIghJXLRU91woS23HrGBwhBDV4xZbOJOsu0BFi9A9jsGgnKuabGL8 X-Received: by 2002:a05:6402:1250:: with SMTP id l16mr64027004edw.362.1594146802810; Tue, 07 Jul 2020 11:33:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1594146802; cv=none; d=google.com; s=arc-20160816; b=GDs8PbKpnad1pip8j+g8hBUgnWU1LRCLubl18SnaGSF0nISqAhnevgx+rqqyfSWCI4 9W/bJgi9mXfXWa2HF18QzOFVeelMx5jz2Gw176S+oAhorjj8lQap/lHGiD9Y9gOY4ChA xn3cxmJ8a3jiEn+EDpGNCikv8K9UXXv3coLS890TVa+ZS/zYdmpXoF9wisyh9+5IAgK1 09eiyAbMbc0Ny19edzaj6lZ4lX87v5/YHLGyIIjfZ9khFTpWgEgJXP4J6F64YwPKWyku Rey2kNWFY+jJWXD9BGoOK1t4V4aIuPr+otfHaUJA19YWKc2a+f9xT1sRbVRq64BTqjbZ rJvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:cc:to:subject:from:message-id; bh=VllwmiS7PIIoAjzQIw4v3UqcyyDV1HlTZ2ZK5+Ky7nU=; b=Iwhv+wu+wlegoH2F2/VNXJtsUJSt26Irug6QmncwC8qc9TDK4BDwphEWHX50jCGLjj JlbC5JyfMrUhQvchn2eBhNMSe+5FZwqZVn6/KXPs238ZCgc5P2+AfPNw0GrvaKgNKpkK 9DKK7gzt6zlGwG7gHVTKoYdTI/aHSmF3PIesKgnir9ouNZCavX6EJO/lmyn9sTBq0blO FHk4qQuOhPCDeHiFvF5aXEgxpnF/yfMuxMcK4NKwFAYVADwYzpOVElrB8jaHY3NFjs+r JfdMMnIvn2xobWX56fk88rqPg3G1YNbSx5hr9GhHusW4u+f8YZucUyomeB9MphsGx/sT 8xfQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h14si15194084edl.132.2020.07.07.11.32.59; Tue, 07 Jul 2020 11:33:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728299AbgGGSca (ORCPT + 99 others); Tue, 7 Jul 2020 14:32:30 -0400 Received: from pegase1.c-s.fr ([93.17.236.30]:8181 "EHLO pegase1.c-s.fr" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728036AbgGGSca (ORCPT ); Tue, 7 Jul 2020 14:32:30 -0400 Received: from localhost (mailhub1-int [192.168.12.234]) by localhost (Postfix) with ESMTP id 4B1WJB69kFz9v1HL; Tue, 7 Jul 2020 20:32:26 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at c-s.fr Received: from pegase1.c-s.fr ([192.168.12.234]) by localhost (pegase1.c-s.fr [192.168.12.234]) (amavisd-new, port 10024) with ESMTP id 1NCa8ObR2Wbn; Tue, 7 Jul 2020 20:32:26 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase1.c-s.fr (Postfix) with ESMTP id 4B1WJB5Jqsz9v1HK; Tue, 7 Jul 2020 20:32:26 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id C334E8B7ED; Tue, 7 Jul 2020 20:32:26 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id ndX5NHz7O5u9; Tue, 7 Jul 2020 20:32:26 +0200 (CEST) Received: from po16052vm.idsi0.si.c-s.fr (unknown [192.168.4.90]) by messagerie.si.c-s.fr (Postfix) with ESMTP id F1B718B7D7; Tue, 7 Jul 2020 20:32:25 +0200 (CEST) Received: by po16052vm.idsi0.si.c-s.fr (Postfix, from userid 0) id 816F965BB1; Tue, 7 Jul 2020 18:32:25 +0000 (UTC) Message-Id: <810bd8840ef990a200f58c9dea9abe767ca02a3a.1594146723.git.christophe.leroy@csgroup.eu> From: Christophe Leroy Subject: [PATCH] powerpc/signal64: Don't opencode page prefaulting To: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman Cc: linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org Date: Tue, 7 Jul 2020 18:32:25 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of doing a __get_user() from the first and last location into a tmp var which won't be used, use fault_in_pages_readable() Signed-off-by: Christophe Leroy --- arch/powerpc/kernel/signal_64.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index 55e5f76554da..c451c47538e1 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -632,7 +633,6 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp) SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, struct ucontext __user *, new_ctx, long, ctx_size) { - unsigned char tmp; sigset_t set; unsigned long new_msr = 0; int ctx_has_vsx_region = 0; @@ -667,9 +667,8 @@ SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx, } if (new_ctx == NULL) return 0; - if (!access_ok(new_ctx, ctx_size) - || __get_user(tmp, (u8 __user *) new_ctx) - || __get_user(tmp, (u8 __user *) new_ctx + ctx_size - 1)) + if (!access_ok(new_ctx, ctx_size) || + fault_in_pages_readable((u8 __user *)new_ctx, ctx_size)) return -EFAULT; /* -- 2.25.0