[PATCH, RFC] fix UP futex code to not generate invalid streqt instruction
Mikael Pettersson
mikpe at it.uu.se
Fri Jul 22 16:27:31 EDT 2011
Russell King - ARM Linux writes:
> On Fri, Jul 22, 2011 at 07:25:14PM +0200, Mikael Pettersson wrote:
> > Compiling kernel 3.0 for UP ARM (ARMv5) I see:
> >
> > kernel/futex.c: In function 'fixup_pi_state_owner':
> > kernel/futex.c:1549: warning: 'curval' may be used uninitialized in this function
> > kernel/futex.c: In function 'handle_futex_death':
> > kernel/futex.c:2454: warning: 'nval' may be used uninitialized in this function
> > /tmp/ccVDjh0q.s: Assembler messages:
> > /tmp/ccVDjh0q.s:113: Warning: source register same as write-back base
>
> It's actually not a problem - the warning has been around for quite a long
> time and I've just been ignoring it having investigated it already. Why?
> The compare-and-exchange is guaranteed to fail at this point without this
> instruction even being executed.
>
> > @@ -104,13 +104,14 @@ futex_init:
> > mvnne r3, #13
> > bne .L6
> > mvn r2, #13
> > #APP
> > @ 97 "/tmp/linux-3.0/arch/arm/include/asm/futex.h" 1
> > @futex_atomic_cmpxchg_inatomic
> > -1: ldrt r1, [r3]
> > teq r1, r3
> > it eq @ explicit IT needed for the 2b label
> > -2: streqt r3, [r3]
> > 3:
> > .pushsection __ex_table,"a"
> > .align 3
>
> r3 = 0, so the ldrt causes a data abort, and invokes the fixup, which
> will skip over the above.
>
> So it's really not a problem, and this is the only place where that
> 'optimization' by the compiler will happen. So no need to fix it.
> Really.
OK. Patch withdrawn.
More information about the linux-arm-kernel
mailing list