From: Benjamin Herrenschmidt <benh@au1.ibm.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Max Filippov <jcmvbkbc@gmail.com>, Takashi Iwai <tiwai@suse.de>,
"linux-arch@vger.kernel.org" <linux-arch@vger.kernel.org>,
opensuse-factory@opensuse.org,
OpenSUSE Kernel Team <opensuse-kernel@opensuse.org>
Subject: Re: [opensuse-factory] Re: [opensuse-kernel] libsigsegv build fail with kernel 3.18.3
Date: Mon, 02 Feb 2015 11:23:57 +1100 [thread overview]
Message-ID: <1422836637.17302.9.camel@au1.ibm.com> (raw)
In-Reply-To: <CA+55aFzQ5QEZ1AYauWviq1gp5j=mqByAtt4fpteeK7amuxcyjw@mail.gmail.com>
On Thu, 2015-01-29 at 10:16 -0800, Linus Torvalds wrote:
> diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
> index eb79907f34fa..6154b0a2b063 100644
> --- a/arch/powerpc/mm/fault.c
> +++ b/arch/powerpc/mm/fault.c
> @@ -437,6 +437,8 @@ good_area:
> */
> fault = handle_mm_fault(mm, vma, address, flags);
> if (unlikely(fault & (VM_FAULT_RETRY|VM_FAULT_ERROR))) {
> + if (fault & VM_FAULT_SIGSEGV)
> + goto bad_area;
> rc = mm_fault_error(regs, address, fault);
> if (rc >= MM_FAULT_RETURN)
> goto bail;
I prefer having the test inside mm_fault_error(), even if that makes the
patch a bit bigger, it keeps the logic in a single place. Untested
patch:
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -184,6 +184,12 @@ static int mm_fault_error(struct pt_regs *regs, unsigned long addr, int fault)
return MM_FAULT_RETURN;
}
+ /* Other faults */
+
+ if (fault & VM_FAULT_SIGSEGV) {
+ up_read(¤t->mm->mmap_sem);
+ return MM_FAULT_ERR(SIGSEGV);
+ }
if (fault & (VM_FAULT_SIGBUS|VM_FAULT_HWPOISON|VM_FAULT_HWPOISON_LARGE))
return do_sigbus(regs, addr, fault);
Cheers,
Ben.
next prev parent reply other threads:[~2015-02-02 0:25 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1422361485.6648.71.camel@opensuse.org>
[not found] ` <54C78756.9090605@suse.cz>
[not found] ` <alpine.LSU.2.11.1501271347440.30227@nerf60.vanv.qr>
[not found] ` <1422364084.6648.82.camel@opensuse.org>
[not found] ` <s5h7fw8hvdp.wl-tiwai@suse.de>
[not found] ` <CA+55aFyzy_wYHHnr2gDcYr7qcgOKM2557bRdg6RBa=cxrynd+Q@mail.gmail.com>
2015-01-27 20:57 ` [opensuse-factory] Re: [opensuse-kernel] libsigsegv build fail with kernel 3.18.3 Linus Torvalds
[not found] ` <CA+55aFxRnj97rpSQvvzLJhpo7C8TQ-F=eB1Ry2n53AV1rN8mwA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-28 7:38 ` [opensuse-factory] " Heiko Carstens
2015-01-28 7:38 ` [opensuse-factory] Re: [opensuse-kernel] " Heiko Carstens
2015-01-29 6:59 ` Max Filippov
2015-01-29 18:16 ` Linus Torvalds
2015-02-02 0:23 ` Benjamin Herrenschmidt [this message]
2015-02-02 1:09 ` Linus Torvalds
2015-02-22 23:50 ` Benjamin Herrenschmidt
2015-02-22 23:50 ` [opensuse-factory] " Benjamin Herrenschmidt
2015-02-28 7:12 ` Generic page fault (Was: libsigsegv ....) Benjamin Herrenschmidt
2015-02-28 7:14 ` Benjamin Herrenschmidt
2015-02-28 10:36 ` Benjamin Herrenschmidt
2015-02-28 19:56 ` Linus Torvalds
2015-02-28 19:58 ` Linus Torvalds
2015-02-28 19:58 ` Linus Torvalds
2015-02-28 21:14 ` Benjamin Herrenschmidt
2015-02-28 21:49 ` Linus Torvalds
2015-02-28 21:49 ` Linus Torvalds
2015-02-28 22:49 ` Benjamin Herrenschmidt
2015-02-28 22:16 ` Benjamin Herrenschmidt
2015-02-28 22:50 ` Benjamin Herrenschmidt
2015-02-28 23:02 ` Benjamin Herrenschmidt
2015-02-28 23:02 ` Benjamin Herrenschmidt
2015-03-01 0:41 ` Linus Torvalds
2015-03-01 0:41 ` Linus Torvalds
2015-03-01 3:57 ` Benjamin Herrenschmidt
[not found] ` <CA+55aFyzy_wYHHnr2gDcYr7qcgOKM2557bRdg6RBa=cxrynd+Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-27 21:12 ` [opensuse-factory] Re: libsigsegv build fail with kernel 3.18.3 Jan Engelhardt
2015-01-27 21:12 ` [opensuse-factory] Re: [opensuse-kernel] " Jan Engelhardt
2015-01-27 21:32 ` Linus Torvalds
2015-01-27 22:14 ` Jan Engelhardt
2015-01-27 22:32 ` Linus Torvalds
2015-01-27 23:13 ` Jan Engelhardt
2015-01-27 23:53 ` David Miller
[not found] ` <CA+55aFzguEFfG2REN1soMC+0UJ7GtANfEvMoCNPt0QqmP9LKoA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-28 8:48 ` [opensuse-factory] " Andreas Schwab
2015-01-28 8:48 ` [opensuse-factory] Re: [opensuse-kernel] " Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1422836637.17302.9.camel@au1.ibm.com \
--to=benh@au1.ibm.com \
--cc=jcmvbkbc@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=opensuse-factory@opensuse.org \
--cc=opensuse-kernel@opensuse.org \
--cc=tiwai@suse.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).