Received: by 10.213.65.68 with SMTP id h4csp520522imn; Tue, 13 Mar 2018 11:39:38 -0700 (PDT) X-Google-Smtp-Source: AG47ELuGz3+jL4JVdXjJye4O1EfRyIeQn0g/lTiCuYWjnUFy/CDNn5D/6VHl4KdzvL2QOfL37rph X-Received: by 2002:a17:902:8d90:: with SMTP id v16-v6mr1443421plo.168.1520966378182; Tue, 13 Mar 2018 11:39:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1520966378; cv=none; d=google.com; s=arc-20160816; b=1AH+2wwGmh+Jgw1NK/h3ort1CDa/qO6lUPEh29XvpXL4/fGb+Yv3SLUIsdZbqICde5 a7vRDK5M2Razm8guFcMzW4NzzOiPOwLGVjSo4+J3fBQXFHCH5P/ns8g40z1dI750EWMO FCD5KBC3TpPZIKKSMruu2oHtlhksStSa5ITsDjzkvhVwSbWgqCVxzUVkcfpMK+MYs78Y CJyBsxhyoLAYberZki2MsKG4Hvbzp3u8XWt25TrHPP5AfrDskLEMt0l+hnNjFcDLj1I3 aIATz+kGxX2b1HCrkUVvssTn6nWcN1o5SMCoiA1Jwm+dkLiosVYF8ISq2pie0lk34bDR E1zQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=I1iwZRYO/7oxhn6bBsoUeq+he1aMtCW74SpoSt/3hio=; b=GD4Zkb1Y7Zs8Yj1srVs7K6jf0jU36wzci2vZk04fxkjsiPmWkn67mOQLUsNz5pSdMX vOkzlF9yHc0jv9JKC85ailUBtvQv/XgPIHnh09cfGU+XO6dEh88ZOM7xwubUXvEjkRdv qUQrQ1BcniYFfTMFUY9Lljq22bblnHF2cxC8B5/VrkkWIC0wAdFwAttbVZMOEvpYmrnG PVaYSnK+8lhoG9ZfcnajHVxstWezTPVbXTmMT/7FPyNNvpVt9VzpYobje1WaO79tnFMu zKIuQwrxeVcUDt7BRth6hPpqNu+/TQk42+mcViu3m2SBliVdrCNRA1qfSa5QRJfy2koJ tPtQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y1-v6si554695pli.586.2018.03.13.11.39.24; Tue, 13 Mar 2018 11:39:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752942AbeCMSgs (ORCPT + 99 others); Tue, 13 Mar 2018 14:36:48 -0400 Received: from mx2.suse.de ([195.135.220.15]:53498 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751620AbeCMSdv (ORCPT ); Tue, 13 Mar 2018 14:33:51 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 34108AF49; Tue, 13 Mar 2018 18:33:50 +0000 (UTC) From: Michal Suchanek To: linuxppc-dev@lists.ozlabs.org Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , Peter Zijlstra , Michal Suchanek , Kate Stewart , Greg Kroah-Hartman , Philippe Ombredanne , Nicholas Piggin , "Tobin C. Harding" , Mahesh Salgaonkar , David Gibson , Al Viro , Michael Neuling , "Oliver O'Halloran" , "Naveen N. Rao" , Madhavan Srinivasan , Masami Hiramatsu , Andrew Morton , Balbir Singh , Sergey Senozhatsky , Christophe Leroy , Andrew Donnellan , Daniel Axtens , Russell Currey , Joe Perches , "Bryant G. Ly" , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , linux-kernel@vger.kernel.org Subject: [PATCH RFC 2/8] powerpc: Use barrier_nospec in copy_from_user Date: Tue, 13 Mar 2018 19:33:00 +0100 Message-Id: <38f5e330801b677df65c774b214b79b799975be4.1520965380.git.msuchanek@suse.de> X-Mailer: git-send-email 2.13.6 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Coopypasta from x86. Signed-off-by: Michal Suchanek --- arch/powerpc/include/asm/uaccess.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/include/asm/uaccess.h b/arch/powerpc/include/asm/uaccess.h index 51bfeb8777f0..af9b0e731f46 100644 --- a/arch/powerpc/include/asm/uaccess.h +++ b/arch/powerpc/include/asm/uaccess.h @@ -248,6 +248,7 @@ do { \ __chk_user_ptr(ptr); \ if (!is_kernel_addr((unsigned long)__gu_addr)) \ might_fault(); \ + barrier_nospec(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -258,8 +259,10 @@ do { \ long __gu_err = -EFAULT; \ unsigned long __gu_val = 0; \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ + int can_access = access_ok(VERIFY_READ, __gu_addr, (size)); \ might_fault(); \ - if (access_ok(VERIFY_READ, __gu_addr, (size))) \ + barrier_nospec(); \ + if (can_access) \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__force __typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -271,6 +274,7 @@ do { \ unsigned long __gu_val; \ const __typeof__(*(ptr)) __user *__gu_addr = (ptr); \ __chk_user_ptr(ptr); \ + barrier_nospec(); \ __get_user_size(__gu_val, __gu_addr, (size), __gu_err); \ (x) = (__force __typeof__(*(ptr)))__gu_val; \ __gu_err; \ @@ -298,15 +302,19 @@ static inline unsigned long raw_copy_from_user(void *to, switch (n) { case 1: + barrier_nospec(); __get_user_size(*(u8 *)to, from, 1, ret); break; case 2: + barrier_nospec(); __get_user_size(*(u16 *)to, from, 2, ret); break; case 4: + barrier_nospec(); __get_user_size(*(u32 *)to, from, 4, ret); break; case 8: + barrier_nospec(); __get_user_size(*(u64 *)to, from, 8, ret); break; } @@ -314,6 +322,7 @@ static inline unsigned long raw_copy_from_user(void *to, return 0; } + barrier_nospec(); return __copy_tofrom_user((__force void __user *)to, from, n); } -- 2.13.6