![]() | |||||||||||||
Messages in this thread |
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/ | ||||||||||||
| Last update: 2005-03-22 12:25 [from the cache] ©2003-2008 | |||||||||||||