From: mark.rutland@arm.com (Mark Rutland)
To: linux-arm-kernel@lists.infradead.org
Subject: arm64: issue with invalid mode handling
Date: Wed, 18 Jan 2017 16:10:31 +0000 [thread overview]
Message-ID: <20170118161031.GL3231@leverpostej> (raw)
In-Reply-To: <1484755011.6398.10.camel@redhat.com>
Hi Mark,
On Wed, Jan 18, 2017 at 10:56:51AM -0500, Mark Salter wrote:
> Recently, I've run across some bug reports with:
>
> Internal error: Attempting to execute userspace memory: 8600000f
>
> But the real problem comes before just before this. Something like:
>
> Bad mode in Error handler detected on CPU0, code 0xbe000000 -- SError?
>
> or
>
> Bad mode in FIQ handler detected on CPU0, code 0x56000000 -- SVC (AArch64)
>
> In handling the bad mode exceptions happening in userspace, the kernel
> ends up trying to send SIGILL to the task but there is no path back to
> userspace. In entry.S, there is:
>
> .macro inv_entry, el, reason, regsize = 64
> kernel_entry \el, \regsize
> mov x0, sp
> mov x1, #\reason
> mrs x2, esr_el1
> b bad_mode
> ^^^^^
>
> which SError and others use. When bad_mode() returns, the LR actually
> contains the userspace address and the above internal error results.
Thanks for the report, it's much appreciated.
> So, what is the intent here? Should the kernel actually try to kill the
> task and keep going for these sorts of things or should it panic?
This was an unintended consequence of commit 9955ac47f4ba1c95 ("arm64:
don't kill the kernel on a bad esr from el0"), which was intended to
cater for certain synchronous exceptions.
We should treat SError as fatal; I'll spin a patch to correct that and
to avoid the erroneous return.
Thanks,
Mark.
prev parent reply other threads:[~2017-01-18 16:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-18 15:56 arm64: issue with invalid mode handling Mark Salter
2017-01-18 16:10 ` Mark Rutland [this message]
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=20170118161031.GL3231@leverpostej \
--to=mark.rutland@arm.com \
--cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.