Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp4925749ybi; Tue, 28 May 2019 04:57:07 -0700 (PDT) X-Google-Smtp-Source: APXvYqwzZynyEcCLqIqFP7++pYM7U2YFgZ+rNYyNSvi817inLvQwLGsE8N4PebSAmCRLu3/c2L7L X-Received: by 2002:a63:1344:: with SMTP id 4mr130232471pgt.448.1559044627629; Tue, 28 May 2019 04:57:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559044627; cv=none; d=google.com; s=arc-20160816; b=VrGdTEN2Gqc1zEDTTa7POwr6DNMleAc/yrG71wCacKJf9NyNtYuF+WSm5UfaMqvJYr NJ2uonFjbI5BzVZQ1F2PFEZllI/TIHJOGXqgStdVPNzwuaULS2rKpD10vc8Q5bSq1/Yc uVG1JkxPNIhMrajiBcd53cdlOZPYrBLs5/QP21rYdG90+sf17qL5QThPANHTYEtDkdTi tIdIgse0w+Wq9SD6/Yjz0a4/5rdyx8lVaFbVMa0wO1ZBr2BuotyZDXGcG5r4ZVMGVR+m QNp0zVeCamm5VGlwV4nlC0WTNPX93s7ae7AU57QNNFq3cAEtUSjy4roxBDvwXdWcHoiK dKJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=m06acolN1j8vOdMrN03K65G8SlY2hmv7dm/Qi7OArks=; b=sW4uqtU7a4bGFky93AvSmQK4F7YX8ej9GkHuTpTQ8EZ5diO+ssYXboNtPLwuACv7dg exzde2KfAO8MHNAfz9PK7CRztWZaMixB4KvZnf97q6mK/z2+/zBqHTmHDh+dZFwq5Xhh xmFtSY01z9ey7NN8CjXpXR3GpE15aX4VSAsOHDNEdxs+vBi5no2Otd9Y+a8DMAxKuDSZ LyUFD+AmG3iVpFmacKhiHJV1ECLBcfYPwYOCGQBGUDm6YXVEEjIQoYD/pG5Y0cjgSx3v wVz/mLeLg7pnGgKMg/8JjEYN/QlV6vPaGDmmGNjGVfrvSZY4ZqId7PchvPfr+Tqo0Myf pKOg== 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 h10si19646180pgs.303.2019.05.28.04.56.51; Tue, 28 May 2019 04:57:07 -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 S1726885AbfE1Lys (ORCPT + 99 others); Tue, 28 May 2019 07:54:48 -0400 Received: from atrey.karlin.mff.cuni.cz ([195.113.26.193]:35181 "EHLO atrey.karlin.mff.cuni.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726580AbfE1Lyr (ORCPT ); Tue, 28 May 2019 07:54:47 -0400 Received: by atrey.karlin.mff.cuni.cz (Postfix, from userid 512) id 7B43E80324; Tue, 28 May 2019 13:54:34 +0200 (CEST) Date: Tue, 28 May 2019 13:54:44 +0200 From: Pavel Machek To: Hugh Dickins Cc: Sebastian Andrzej Siewior , x86@kernel.org, Andrew Morton , Mike Rapoport , Andrea Arcangeli , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Borislav Petkov , Dave Hansen Subject: My emacs problem -- was Re: [PATCH] x86/fpu: Use fault_in_pages_writeable() for pre-faulting Message-ID: <20190528115443.GA27627@amd> References: <20190526173325.lpt5qtg7c6rnbql5@linutronix.de> <20190526173501.6pdufup45rc2omeo@linutronix.de> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="3V7upXqbjpZ4EhLz" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --3V7upXqbjpZ4EhLz Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi! On Sun 2019-05-26 12:25:27, Hugh Dickins wrote: > On Sun, 26 May 2019, Sebastian Andrzej Siewior wrote: > > On 2019-05-26 19:33:25 [+0200], To Hugh Dickins wrote: > > From: Hugh Dickins > > =E2=80=A6 > > > Signed-off-by: Hugh Dickins > >=20 > > Hugh, I took your patch, slapped a signed-off-by line. Please say that > > you are fine with it (or object otherwise). >=20 > I'm fine with it, thanks Sebastian. Sorry if I wasted your time by not > giving it my sign-off in the first place, but I was not comfortable to > dabble there without your sign-off too - which it now has. (And thought > you might already have your own version anyway: just provided mine as > illustration, so that we could be sure of exactly what I'd been testing.) I applied Hugh's patch on top of -rc2, but still get emacs problems: But this time I'm not sure if it is same emacs problem or different emacs problem.... X protocol error: BadValue (integer parameter out of range for operation) on protocol request 139 When compiled with GTK, Emacs cannot recover from X disconnects. This is a GTK bug: https://bugzilla.gnome.org/show_bug.cgi?id=3D85715 For details, see etc/PROBLEMS. (emacs:8175): GLib-WARNING **: g_main_context_prepare() called recursively from within a source's check() or prepare() member. (emacs:8175): GLib-WARNING **: g_main_context_check() called recursively from within a source's check() or prepare() member. Fatal error 6: Aborted Backtrace: emacs[0x8138719] emacs[0x8120446] emacs[0x813875c] emacs[0x80f54c0] emacs[0x80f6f3f] emacs[0x80f6fab] /usr/lib/i386-linux-gnu/libX11.so.6(_XError+0x11a)[0xf6ea1b3a] /usr/lib/i386-linux-gnu/libX11.so.6(+0x39b5b)[0xf6e9eb5b] /usr/lib/i386-linux-gnu/libX11.so.6(+0x39c26)[0xf6e9ec26] /usr/lib/i386-linux-gnu/libX11.so.6(_XEventsQueued+0x6e)[0xf6e9f4be] /usr/lib/i386-linux-gnu/libX11.so.6(XPending+0x62)[0xf6e90752] /usr/lib/i386-linux-gnu/libgdk-3.so.0(+0x48073)[0xf7566073] /lib/i386-linux-gnu/libglib-2.0.so.0(g_main_context_prepare+0x17b)[0xf70244= fb] /lib/i386-linux-gnu/libglib-2.0.so.0(+0x46f74)[0xf7024f74] /lib/i386-linux-gnu/libglib-2.0.so.0(g_main_context_pending+0x34)[0xf702514= 4] /usr/lib/i386-linux-gnu/libgtk-3.so.0(gtk_events_pending+0x1f)[0xf77c9a8f] emacs[0x80f55a9] emacs[0x812714f] emacs[0x8126a95] emacs[0x8172db9] emacs[0x8192bd7] emacs[0x819312d] emacs[0x8125634] emacs[0x8125c6d] emacs[0x812725b] emacs[0x8129eaa] emacs[0x81c7c90] emacs[0x8127815] emacs[0x812ada3] emacs[0x812bdad] emacs[0x812d838] emacs[0x818b76c] emacs[0x8120890] emacs[0x818b66b] emacs[0x8124b84] emacs[0x8124e3f] emacs[0x8059cb0] /lib/i386-linux-gnu/i686/cmov/libc.so.6(__libc_start_main+0xf3)[0xf61a7a63] emacs[0x805a76f] Aborted (core dumped) Best regards, Pavel commit 018c9da72adf920efd0ba250fcf433b836d3cfbc Author: Hugh Dickins Date: Sun May 26 19:33:25 2019 +0200 x86/fpu: Use fault_in_pages_writeable() for pre-faulting =20 Since commit =20 d9c9ce34ed5c8 ("x86/fpu: Fault-in user stack if copy_fpstate_to_sigf= rame() fails") =20 we use get_user_pages_unlocked() to pre-faulting user's memory if a write generates a page fault while the handler is disabled. This works in general and uncovered a bug as reported by Mike Rapoport. =20 It has been pointed out that this function may be fragile and a simple pre-fault as in fault_in_pages_writeable() would be a better solution. Better as in taste and simplicity: That write (as performed by the alternative function) performs exactly the same faulting of memory that we had before. This was suggested by Hugh Dickins and Andrew Morton. =20 Use fault_in_pages_writeable() for pre-faulting of user's stack. =20 Suggested-by: Andrew Morton Signed-off-by: Hugh Dickins Link: https://lkml.kernel.org/r/alpine.LSU.2.11.1905251033230.1112@eggl= y.anvils [bigeasy: patch description] Signed-off-by: Sebastian Andrzej Siewior diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c index 5a8d118..060d618 100644 --- a/arch/x86/kernel/fpu/signal.c +++ b/arch/x86/kernel/fpu/signal.c @@ -5,6 +5,7 @@ =20 #include #include +#include =20 #include #include @@ -189,15 +190,7 @@ int copy_fpstate_to_sigframe(void __user *buf, void __= user *buf_fx, int size) fpregs_unlock(); =20 if (ret) { - int aligned_size; - int nr_pages; - - aligned_size =3D offset_in_page(buf_fx) + fpu_user_xstate_size; - nr_pages =3D DIV_ROUND_UP(aligned_size, PAGE_SIZE); - - ret =3D get_user_pages_unlocked((unsigned long)buf_fx, nr_pages, - NULL, FOLL_WRITE); - if (ret =3D=3D nr_pages) + if (!fault_in_pages_writeable(buf_fx, fpu_user_xstate_size)) goto retry; return -EFAULT; } --=20 (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blo= g.html --3V7upXqbjpZ4EhLz Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlztIYMACgkQMOfwapXb+vI75ACdHJt+UjplhowDy8ZXEkJhicP0 z70Anih1OGc59Aa8Dl3kUnN28Z4i83Dy =94bm -----END PGP SIGNATURE----- --3V7upXqbjpZ4EhLz--