[parisc-linux] a pretty big change
Paul Bame
bame@fc.hp.com
Fri, 10 Dec 1999 10:15:57 -0700
Ulrich,
I apologize for suggesting you consider the
r1 value 0xc0112000 by mistake, I meant the r2 value 0xc004a170.
From the r2 and iaoq values, it looks like create_buffers():
create_buffers+4C: STW r0,-116(r30)
LDI 4096,r4
SUB r4,r8,r4
COMIB,> 0,r4,create_buffers+0x00a0
LDI 0,r3
ZDEPI -1,31,16,r5
BL get_unused_buffer_head,r2
OR r9,r0,r26
MOVB,=,N r28,r26,create_buffers+0x00a8 ***** %r2
STW r3,20(r26)
Just called get_unused_buffer_head, which died on the indicated line:
get_unused_buffer_head+4C: ADDIL L%0x73000,r27
LDO -1(r20),r20 ; nr_unused_buffer_heads--
LDW 232(r1),r3 ; r3 = bh
STW r20,264(r4) ; nr_unused_buffer_heads--
OR r3,r0,r28 ; return value = r3
LDW 28(r3),r19 *** died here
B get_unused_buffer_head+0x00e0
STW r19,232(r1)
Since %r3 is zero at this moment, we die. I think we are dying trying
to execute 'unused_list = bh->b_next_free;' in get_unused_buffer_head()
with bh = 0. No idea why.
-P