diff options
Diffstat (limited to 'fs/reiserfs/inode.c')
-rw-r--r-- | fs/reiserfs/inode.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/reiserfs/inode.c b/fs/reiserfs/inode.c index 1aaf2c7d44e6..d9f614a57731 100644 --- a/fs/reiserfs/inode.c +++ b/fs/reiserfs/inode.c | |||
@@ -1980,7 +1980,17 @@ int reiserfs_new_inode(struct reiserfs_transaction_handle *th, | |||
1980 | out_inserted_sd: | 1980 | out_inserted_sd: |
1981 | inode->i_nlink = 0; | 1981 | inode->i_nlink = 0; |
1982 | th->t_trans_id = 0; /* so the caller can't use this handle later */ | 1982 | th->t_trans_id = 0; /* so the caller can't use this handle later */ |
1983 | iput(inode); | 1983 | |
1984 | /* If we were inheriting an ACL, we need to release the lock so that | ||
1985 | * iput doesn't deadlock in reiserfs_delete_xattrs. The locking | ||
1986 | * code really needs to be reworked, but this will take care of it | ||
1987 | * for now. -jeffm */ | ||
1988 | if (REISERFS_I(dir)->i_acl_default) { | ||
1989 | reiserfs_write_unlock_xattrs(dir->i_sb); | ||
1990 | iput(inode); | ||
1991 | reiserfs_write_lock_xattrs(dir->i_sb); | ||
1992 | } else | ||
1993 | iput(inode); | ||
1984 | return err; | 1994 | return err; |
1985 | } | 1995 | } |
1986 | 1996 | ||