On Mon, Oct 29, 2001 at 02:35:45PM +0100, tommy.christensen@eicon.com 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. Ralf