[PATCH] ARM: unwind: add unwind directives to bitops assembly macros
Will Deacon
will.deacon at arm.com
Fri Nov 18 12:40:01 EST 2011
On Thu, Nov 17, 2011 at 06:48:01PM +0000, Dave Martin wrote:
> On Thu, Nov 17, 2011 at 06:04:56PM +0000, Will Deacon wrote:
> > The bitops functions (e.g. _test_and_set_bit) on ARM do not have unwind
> > annotations and therefore the kernel cannot backtrace out of them on a
> > fatal error (for example, NULL pointer dereference).
> >
> > This patch annotates the bitops assembly macros with UNWIND annotations
> > so that we can produce a meaningful backtrace on error.
>
> I take it these macros aren't likely ever to get used except in the
> definition of complete functions (as in testsetbit.S etc.)?
Currently they're only used in that way and I don't see why that would
change.
> One way to make the correct behaviour explicit would be to put the
> function boilerplate into the macros instead:
>
> #include <linux/linkage.h>
> #include <asm/unwind.h>
>
> .macro bitop name, instr
> ENTRY(\name )
> UNWIND( .fnstart )
> @ stuff
> @ bx lr / mov pc,lr
> UNWIND( .fnend )
> ENDPROC(\name )
> .endm
>
> That makes it harder to misuse the macros or to typo the ENDPROC()
> directive, as well as allowing a few lines to be eliminated from the
> other .S files.
That's not a bad idea, I'll re-roll the patch next week.
Will
More information about the linux-arm-kernel
mailing list