Skip to content

Commit

Permalink
reiserfs: deal with NULL xattr root w/ xattrs disabled
Browse files Browse the repository at this point in the history
This avoids an Oops in open_xa_root that can occur when deleting a file
with xattrs disabled.  It assumes that the xattr root will be there, and
that is not guaranteed.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Jeff Mahoney authored and Linus Torvalds committed May 17, 2009
1 parent 12abb35 commit ceb5edc
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
2 changes: 0 additions & 2 deletions fs/reiserfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -448,13 +448,11 @@ int remove_save_link(struct inode *inode, int truncate)
static void reiserfs_kill_sb(struct super_block *s)
{
if (REISERFS_SB(s)) {
#ifdef CONFIG_REISERFS_FS_XATTR
if (REISERFS_SB(s)->xattr_root) {
d_invalidate(REISERFS_SB(s)->xattr_root);
dput(REISERFS_SB(s)->xattr_root);
REISERFS_SB(s)->xattr_root = NULL;
}
#endif
if (REISERFS_SB(s)->priv_root) {
d_invalidate(REISERFS_SB(s)->priv_root);
dput(REISERFS_SB(s)->priv_root);
Expand Down
4 changes: 3 additions & 1 deletion fs/reiserfs/xattr.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,9 @@ static struct dentry *open_xa_root(struct super_block *sb, int flags)
mutex_lock_nested(&privroot->d_inode->i_mutex, I_MUTEX_XATTR);

xaroot = dget(REISERFS_SB(sb)->xattr_root);
if (!xaroot->d_inode) {
if (!xaroot)
xaroot = ERR_PTR(-ENODATA);
else if (!xaroot->d_inode) {
int err = -ENODATA;
if (xattr_may_create(flags))
err = xattr_mkdir(privroot->d_inode, xaroot, 0700);
Expand Down

0 comments on commit ceb5edc

Please sign in to comment.