diff --git a/fs/jfs/jfs_metapage.c b/fs/jfs/jfs_metapage.c index 2e8461ce74de..7855d82327c5 100644 --- a/fs/jfs/jfs_metapage.c +++ b/fs/jfs/jfs_metapage.c @@ -661,8 +661,8 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock, mp->data = page_address(page) + page_offset; mp->index = lblock; if (unlikely(insert_metapage(page, mp))) { - free_metapage(mp); - goto unlock; + release_metapage(mp); + return NULL; } lock_metapage(mp); } @@ -678,6 +678,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock, unlock: unlock_page(page); + put_page(page); return NULL; }