2010-03-22 15:46:46

by Curt Wohlgemuth

[permalink] [raw]
Subject: [PATCH] ext4: Fix buffer head ref leaks after calls to ext4_get_inode_loc()

Fix buffer head reference leaks in ext4_write_inode() and
ext4_xattr_fiemap().

Signed-off-by: Curt Wohlgemuth <[email protected]>
---

ext4_get_inode_loc() returns with a reference to the iloc->bh; the two call
sites below do not release this reference.


diff -uprN orig/fs/ext4/extents.c new/fs/ext4/extents.c
--- orig/fs/ext4/extents.c 2010-03-22 08:16:57.000000000 -0700
+++ new/fs/ext4/extents.c 2010-03-22 08:35:40.000000000 -0700
@@ -3879,6 +3879,7 @@ static int ext4_xattr_fiemap(struct inod
physical += offset;
length = EXT4_SB(inode->i_sb)->s_inode_size - offset;
flags |= FIEMAP_EXTENT_DATA_INLINE;
+ brelse(iloc.bh);
} else { /* external block */
physical = EXT4_I(inode)->i_file_acl << blockbits;
length = inode->i_sb->s_blocksize;
diff -uprN orig/fs/ext4/inode.c new/fs/ext4/inode.c
--- orig/fs/ext4/inode.c 2010-03-22 08:16:57.000000000 -0700
+++ new/fs/ext4/inode.c 2010-03-22 08:36:18.000000000 -0700
@@ -5385,6 +5385,7 @@ int ext4_write_inode(struct inode *inode
(unsigned long long)iloc.bh->b_blocknr);
err = -EIO;
}
+ brelse(iloc.bh);
}
return err;
}


2010-04-03 21:44:58

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] ext4: Fix buffer head ref leaks after calls to ext4_get_inode_loc()

On Mon, Mar 22, 2010 at 08:46:42AM -0700, Curt Wohlgemuth wrote:
> Fix buffer head reference leaks in ext4_write_inode() and
> ext4_xattr_fiemap().
>
> Signed-off-by: Curt Wohlgemuth <[email protected]>

Added to ext4 patch queue

- Ted