Skip to content

Commit

Permalink
Btrfs: Fix extent_map leak in extent_bmap
Browse files Browse the repository at this point in the history
Signed-off-by: Chris Mason <chris.mason@oracle.com>
  • Loading branch information
Yan authored and Chris Mason committed Sep 25, 2008
1 parent 44ec0b7 commit c67cda1
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions fs/btrfs/extent_map.c
Original file line number Diff line number Diff line change
Expand Up @@ -1924,6 +1924,7 @@ sector_t extent_bmap(struct address_space *mapping, sector_t iblock,
struct inode *inode = mapping->host;
u64 start = iblock << inode->i_blkbits;
u64 end = start + (1 << inode->i_blkbits) - 1;
sector_t sector = 0;
struct extent_map *em;

em = get_extent(inode, NULL, 0, start, end, 0);
Expand All @@ -1932,9 +1933,12 @@ sector_t extent_bmap(struct address_space *mapping, sector_t iblock,

if (em->block_start == EXTENT_MAP_INLINE ||
em->block_start == EXTENT_MAP_HOLE)
return 0;
goto out;

return (em->block_start + start - em->start) >> inode->i_blkbits;
sector = (em->block_start + start - em->start) >> inode->i_blkbits;
out:
free_extent_map(em);
return sector;
}

static int add_lru(struct extent_map_tree *tree, struct extent_buffer *eb)
Expand Down

0 comments on commit c67cda1

Please sign in to comment.