Re: OOPS caused by ext2 changes

David C. Hansen (haveblue@us.ibm.com)
Mon, 15 Apr 2002 22:31:33 -0700


Andrew Morton wrote:

>Dave Hansen wrote:
>
>>Andrew Morton and I discused this earlier. I have some more information
>>now. The problem: "dbench 64" run on a small (~120meg) partition with
>>1k block sizes produces Oopses.
>>
>>This changeset:
>>http://linus.bkbits.net:8080/linux-2.5/patch@1.248.2.6?nav=index.html|ChangeSet|cset@1.248.2.6
>>is the culprit. Without it applied, none of this happens.
>>
>However it seems that there's potential for a buffer reference
>leak in ext2_get_branch:
>
>See, sb_bread() bumps b_count, but on the `goto changed;'
>branch we lose track of that buffer.
>
>b_count is only 16 bits, so it's conceivable that the
>count wraps to zero, and that is fatal.
>
>It would be interesting to replace that `goto changed;'
>with { __brelse(bh); goto changed; }. Plus maybe a
>debug printk to see if we are indeed hitting that path.
>
Well, I'm a little bit clearer about what's going on now. I noticed
that verify_chain() is inline, and that is what is actually Oopsing.
Any idea how we're getting 8 into edx?

edx: 00000008
Code; c013dea4 <__brelse+4/20> <=====
0: 8b 42 14 mov 0x14(%edx),%eax <=====

Is the Indirect array getting junk into it?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/