[PATCH] ARM: enable IRQs in user undefined instruction vector
vinayak menon
vinayakm.list at gmail.com
Fri Feb 7 07:19:54 EST 2014
> I don't see any point to this change - it does nothing to address the
> point I raised.
I see.
The issue that was observed can be summarized like this. There was a
userspace crash which was because of an 8 byte offset to SP when
returning from a function (strtoimax).
Analysis showed that the vpush {d8} instruction at the beginning of
strtoimax failed to execute, but vpop {d8} at the end did execute.
This resulted in a 8 byte offset in SP and resulted in the crash.
Further debugging showed that this was happening because, one of the
ldrht instructions in __und_usr was hitting a page fault, and the
fixup code was returning to the next instruction.
Correction was added to PC in the fixup (str r4, [sp, #S_PC] , in
the patch above), to fix the problem. But we were left with the
warning (might_sleep).
Reading the discussions, I thought enabling irq is an issue, and felt
that without enabling the interrupts, just disabling preemption before
calling ldrht should stop the warnings. Because do_page_fault jumps to
call fixup, if its an atomic context.
Thanks
More information about the linux-arm-kernel
mailing list