[U-Boot] [RFC PATCH v1] powerpc: Fix off-by-one error in relocation

Chris Packham judge.packham at gmail.com
Wed Sep 10 05:54:13 CEST 2014


Hi All,

On Tue, Sep 9, 2014 at 12:22 PM, Chris Packham <judge.packham at gmail.com> wrote:
> When the got2 pointers were adjusted after relocation the last entry was
> missed. For most builds was something innocuous and there was no
> observable problem but at least for the P2041RDB board this ended up
> being NetArpWaitTimerStart which caused the ARP packets to timeout
> immediately.
>
> On Mon, Sep 8, 2014 at 9:04 PM,
> Joakim Tjernlund <joakim.tjernlund at transmode.se> wrote:
>>
>> The relevant code that uses
>> __got2_entries is in start.S:
>>
>> in_ram:
>>
>>         /*
>>          * Relocation Function, r12 point to got2+0x8000
>>          *
>>          * Adjust got2 pointers, no need to check for 0, this code
>>          * already puts a few entries in the table.
>>          */
>>         li      r0,__got2_entries at sectoff@l
>>         la      r3,GOT(_GOT2_TABLE_)
>>         lwz     r11,GOT(_GOT2_TABLE_)
>>         mtctr   r0
>>         sub     r11,r3,r11
>>         addi    r3,r3,-4
>> 1:      lwzu    r0,4(r3)
>>         cmpwi   r0,0
>>         beq-    2f
>>         add     r0,r0,r11
>>         stw     r0,0(r3)
>> 2:      bdnz    1b
>>
>> bdnz does decrement then test for zero so __got2_entries should hold the
>> number of entries to relocate.
>
> But __got2_entries is 1 less than it should be. Fix this by removing the
> -1 from the __got2_entries calculation.
>
> Cc: Joakim Tjernlund <joakim.tjernlund at transmode.se>
> Signed-off-by: Chris Packham <judge.packham at gmail.com>
> ---
> So here's a patch that addresses the issue. I've tested it on a P2041RDB
> (mpc85xx/QorIq). I am aware that I'm touching a lot of platforms so I
> need some help testing.
>
> I've deliberately left off the following board specific files which at a
> glance have the same off-by-one error:
>

Sorry for the noise but Jocke has pointed me in the direction of a
better fix. I'll submit that as a new patch. This one can be
abandoned.


More information about the U-Boot mailing list