Re: oops on 2.4.13-pre5 in prune_dcache

Alexander Viro (viro@math.psu.edu)
Tue, 30 Oct 2001 20:13:51 -0500 (EST)


On Tue, 30 Oct 2001, Linus Torvalds wrote:

> It's almost certainly _supposed_ to be a NULL pointer, but has bit 6
> set.
>
> So we do
>
> if (dentry->d_op && dentry->d_op->d_iput)
>
> and because dentry->d_op isn't NULL, we oops on the d_op->d_iput
> dereference.
>
> Something is setting a bit in your dentry. Either RAM errors (do you
> have ECC memory or a history of SIGSEGV's to give any indication either
> way?) or a wild "set_bit()" pointer or similar.

... or corrupted pointer in the list, in which case we are at the address
that had never been a dentry.

Frankly, it looks like adding magic to struct dentry and struct inode
might be a good idea. Both icache and dcache lists tend to be long,
so any memory corruption is very likely to show up in the code that
walks them.

-
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/