[Top] [All Lists]

Re: Fixup in unaligned.c

Subject: Re: Fixup in unaligned.c
From: Ralf Baechle <>
Date: Tue, 30 Oct 2001 10:17:09 +0100
In-reply-to: <>; from on Mon, Oct 29, 2001 at 02:35:45PM +0100
References: <>
User-agent: Mutt/1.2.5i
On Mon, Oct 29, 2001 at 02:35:45PM +0100, wrote:

> It seems we don't always handle bad user-mode pointers correctly.
> If put_user is called with an unmapped AND unaligned address it
> kills the current process instead of returning EFAULT.
> The reason for this is that we do compute_return_epc() in do_ade()
> before the exception table is searched, so we never get a match.

The missplaced branch emulation is a known problem in basically all of our
execption handers that have to emulate branches in software.  It also
effects ptrace; it is possible that a debugger already observes the new epc
after the branch has been executed but the instruction in the delay slow
wasn't due to some problem like a page fault.

> Below is a simple patch to fix it (attached as well).
> The second part is not related, but it makes sense to only consult
> the MF_FIXADE flag on exceptions originating from user-mode, right?

That's actually an evil one from which local DoS attacks can be constructed.


<Prev in Thread] Current Thread [Next in Thread>