diff --git a/[refs] b/[refs] index 671e7ac85223..60fc62c1cc2c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1d2ef5901483004d74947bbf78d5146c24038fe7 +refs/heads/master: 2d2422aebc037095f77551119f795449d29befed diff --git a/trunk/fs/namei.c b/trunk/fs/namei.c index f4788365ea22..b52bc685465f 100644 --- a/trunk/fs/namei.c +++ b/trunk/fs/namei.c @@ -2616,7 +2616,6 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry) if (!dir->i_op->rmdir) return -EPERM; - dget(dentry); mutex_lock(&dentry->d_inode->i_mutex); error = -EBUSY; @@ -2637,7 +2636,6 @@ int vfs_rmdir(struct inode *dir, struct dentry *dentry) out: mutex_unlock(&dentry->d_inode->i_mutex); - dput(dentry); if (!error) d_delete(dentry); return error; @@ -3027,7 +3025,6 @@ static int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry, if (error) return error; - dget(new_dentry); if (target) mutex_lock(&target->i_mutex); @@ -3048,7 +3045,6 @@ static int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry, out: if (target) mutex_unlock(&target->i_mutex); - dput(new_dentry); if (!error) if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE)) d_move(old_dentry,new_dentry); diff --git a/trunk/fs/xfs/xfs_aops.c b/trunk/fs/xfs/xfs_aops.c index 63e971e2b837..8c37dde4c521 100644 --- a/trunk/fs/xfs/xfs_aops.c +++ b/trunk/fs/xfs/xfs_aops.c @@ -1300,6 +1300,7 @@ xfs_end_io_direct_write( bool is_async) { struct xfs_ioend *ioend = iocb->private; + struct inode *inode = ioend->io_inode; /* * blockdev_direct_IO can return an error even after the I/O @@ -1331,7 +1332,7 @@ xfs_end_io_direct_write( } /* XXX: probably should move into the real I/O completion handler */ - inode_dio_done(ioend->io_inode); + inode_dio_done(inode); } STATIC ssize_t