Received: by 10.192.165.148 with SMTP id m20csp5000555imm; Tue, 24 Apr 2018 11:56:43 -0700 (PDT) X-Google-Smtp-Source: AIpwx48YHQ9BmMHhprUpbrQiSSby3gh9vPM/Qh7Ac83ZanTBNr3WsP3mTFPG7zzGq+vlz7GS46Sg X-Received: by 2002:a17:902:a70c:: with SMTP id w12-v6mr25588134plq.74.1524596203859; Tue, 24 Apr 2018 11:56:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524596203; cv=none; d=google.com; s=arc-20160816; b=Fm0hidldZVxLPTUWvYrDZZZhTIrlaxm9rqIA/Xn4CLQ1018DLt4cKr+hJE+HqIHtJa NsFkLJPRU67vtNErKaRJrMExgtRYsDKP5QCwayn+EjmoM7Cmyq+4dmGE+bJmRT83tjv4 vZcyyAX3tHXH5sdjVQj66pX2qd0XYP3KkFVPeA8txJZg6ZAK5wHMTCL5HNw18FerM9vr b6BvAqqitoiozQES3TKnrA9InP83GsBw0xQv9n4JK5xlXU/dQnWsKpyOtN9FcAFT0K5N GX3O2v8NRkvmTi3fsXtamSJovkFPNZtIHxJSCtWd0pRrzbTb53gF08JOvFfZZp0gUax6 F7fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=ielraFaqvCg2B2aISnRbN1VCswDXROU0MnmUzMIVfis=; b=JGLKD4W8Xz7dFBrCsEozXrpShVvaYkEMZji+XM1qD+Uk0t6s94ev6XUE9v3cvKs/36 WcIjDG7aBYU+bciv0n8iE6y9GyNKk/UZqBcUFt9yKT1M4nO4FUWj6BdERUh2t5L1o4Xh Ut7FKdtW7Pfyia7qKVQEok41JVSnzA2Lp3020mixN0Sd0GzLI04zVh3npzjefkP/mU/b xe8jIQ6O9IoQrzQbZ/B54TglHl+Da9I3nYpsAwk45Ikv3YOzDXMAUwd8lRhwoS1XsTmO w1ykJk+qkIXQQD5j9EnFoGGMFL4fQMN1+XWnjLZHVDDLjRDpg/slGWhkCunD0KCUUzya fGYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@gmail.com header.s=20161025 header.b=JHMSR7Kg; 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 t15si14017847pfa.170.2018.04.24.11.56.29; Tue, 24 Apr 2018 11:56:43 -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; dkim=fail header.i=@gmail.com header.s=20161025 header.b=JHMSR7Kg; 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 S1752785AbeDXSxv (ORCPT + 99 others); Tue, 24 Apr 2018 14:53:51 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:45960 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750997AbeDXSxs (ORCPT ); Tue, 24 Apr 2018 14:53:48 -0400 Received: by mail-oi0-f66.google.com with SMTP id j10-v6so18666369oii.12 for ; Tue, 24 Apr 2018 11:53:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=ielraFaqvCg2B2aISnRbN1VCswDXROU0MnmUzMIVfis=; b=JHMSR7KgNvYhYR6YhVTT9P+ws7l/uoMo7CNYQdGS1RuAO6ovzJ3sKjzQ8tEsXqu4yo zy0HRtpXcuJYzv/ROQSBycXDB1kvjv/oIER+3BILfHJhi1OtaYNMeYRQDC0iE7EMcA4k xQmbLrsOmbGjPM7jHM6HgQTEp4pkzS3mccZSuPwNhfVnXRCKXeQZsG5MaZu6RkyX1w9M Lj7kWQAnXRSQIi6GFfaAd3BXzB79J3y4xIJYehJ0nns9k6vwx4i8o0Bno8y8t0gL1/AB ol9qQikUn8utEQsFWQ616lpwR5b/Z2WQnbsBQ0gyXhR8fklC6ftvzQTlMyRMmTSEXMIO wOWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=ielraFaqvCg2B2aISnRbN1VCswDXROU0MnmUzMIVfis=; b=pfU/qCeBf2BglmXHahfIZ+d8DiAu6BvplT2jtHWF8iuVwud8ozNfkCr5bnct2JnK6b ufg/hzkBSCBoHcZGdNMAJhax2tzW+b58ZIpElDDhBiuKvl49VxAhE+d+0u+zodaD9tIe 56GFISNA9TiD4mckg7hFZiijoRhWbctjbNbQAb/xrJzvyZQ5mw9jonkOb0o0OUI26lI4 U0iemIZM773bWNuyfptPJynmZADyDqiQbl0K7dF36KdvF7P8vPOJXkHxewK540VL/paw JhdpqSKZwYKo1e5ECJ2gRKNs6TIwfzN+KJiULFk6GYCL1QNHWqaCgxdSqNjXR6FHtoWJ d+NQ== X-Gm-Message-State: ALQs6tCDPIpzthMlZRj+j48eTdPKb0gJy+G3hTzvkSHlI8Vsp321qECY Bq/O1gnITmnrB038QJpXnLyFhCPbWhWKxWFtX08= X-Received: by 2002:aca:908:: with SMTP id 8-v6mr13998035oij.173.1524596027615; Tue, 24 Apr 2018 11:53:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.138.3.5 with HTTP; Tue, 24 Apr 2018 11:53:27 -0700 (PDT) In-Reply-To: <20180424160425.DB9946C5A7@po15720vm.idsi0.si.c-s.fr> References: <20180424160425.DB9946C5A7@po15720vm.idsi0.si.c-s.fr> From: Mathieu Malaterre Date: Tue, 24 Apr 2018 20:53:27 +0200 X-Google-Sender-Auth: QKzoC215MLPOhjqN8PZBdLnLkhg Message-ID: Subject: Re: [PATCH v2] powerpc/signal32: Use fault_in_pages_readable() to prefault user context To: Christophe Leroy Cc: Benjamin Herrenschmidt , Paul Mackerras , Michael Ellerman , LKML , linuxppc-dev Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 24, 2018 at 6:04 PM, Christophe Leroy wrote: > Use fault_in_pages_readable() to prefault user context > instead of open coding > > Signed-off-by: Christophe Leroy > --- > v2: using sizeof(*ctx) as size of ctx instead of 1 > > arch/powerpc/kernel/signal_32.c | 13 +++++-------- > 1 file changed, 5 insertions(+), 8 deletions(-) > > diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c > index 492f03451877..4a9e4d6d555b 100644 > --- a/arch/powerpc/kernel/signal_32.c > +++ b/arch/powerpc/kernel/signal_32.c > @@ -25,6 +25,7 @@ > #include > #include > #include > +#include > #include > #ifdef CONFIG_PPC64 > #include > @@ -1045,7 +1046,6 @@ long sys_swapcontext(struct ucontext __user *old_ctx, > struct ucontext __user *new_ctx, > int ctx_size, int r6, int r7, int r8, struct pt_regs *regs) > { > - unsigned char tmp __maybe_unused; > int ctx_has_vsx_region = 0; > > #ifdef CONFIG_PPC64 > @@ -1109,9 +1109,8 @@ long sys_swapcontext(struct ucontext __user *old_ctx, > } > if (new_ctx == NULL) > return 0; > - if (!access_ok(VERIFY_READ, new_ctx, ctx_size) > - || __get_user(tmp, (u8 __user *) new_ctx) > - || __get_user(tmp, (u8 __user *) new_ctx + ctx_size - 1)) > + if (!access_ok(VERIFY_READ, new_ctx, ctx_size) || > + fault_in_pages_readable((u8 __user *)new_ctx, ctx_size)) > return -EFAULT; > > /* > @@ -1231,7 +1230,6 @@ int sys_debug_setcontext(struct ucontext __user *ctx, > { > struct sig_dbg_op op; > int i; > - unsigned char tmp __maybe_unused; > unsigned long new_msr = regs->msr; > #ifdef CONFIG_PPC_ADV_DEBUG_REGS > unsigned long new_dbcr0 = current->thread.debug.dbcr0; > @@ -1287,9 +1285,8 @@ int sys_debug_setcontext(struct ucontext __user *ctx, > current->thread.debug.dbcr0 = new_dbcr0; > #endif > > - if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx)) > - || __get_user(tmp, (u8 __user *) ctx) > - || __get_user(tmp, (u8 __user *) (ctx + 1) - 1)) > + if (!access_ok(VERIFY_READ, ctx, sizeof(*ctx)) || > + fault_in_pages_readable((u8 __user *)ctx, sizeof(*ctx))) > return -EFAULT; > > /* > -- > 2.13.3 > Looks good: Reviewed-by: Mathieu Malaterre Thanks for fixing my previous attempt !