Re: 2.6.23-rc8-mm2: BUG near reiserfs_xattr_set

Christoph Hellwig
2007-09-27T20:26:23Z

On Thu, Sep 27, 2007 at 12:48:33PM -0700, Andrew Morton wrote:
> > __fput+0x124/0x1a9
> > fput+0x31/0x35
> > reiserfs_xattr_set+0x291/0x2b0 [reiserfs]
> > user_set+0x4c/0x57 [reiserfs]
> > reiserfs_setxattr+0x81/0xf1 [reiserfs]
> > vfs_setxattr+0x7d/0xfa
> > setxattr+0xb9/0xd1
> > sys_lsetxattr+0x4c/0x85
> > sysenter_past_esp+0x57/0x85
> >
> > EIP: mnt_drop_write+0x5b/0x9d
> >
>
> Hi, Dave!

This sure looks like a result of the reiserfs xattr code beeing
really sucky and passing a NULL vfsmount to dentry_open.

Dave will probably find a bandaid to work around this, but the
right fix is to stop using a file struct here entirely. If you
look at reiserfs_xattr_set it's not actually used at all except
for passing it to ->prepare_write and ->commit_write which then
don't use it at all. All that crap should be rewritten to just
pass the dentry around. Note that all this should not acquire
writer counts on the vfsmount - we have done this already
before calling into the xattr methods.