Skip to content

Commit

Permalink
[LogFS] Prevent mempool_destroy NULL pointer dereference
Browse files Browse the repository at this point in the history
It would probably be better to just accept NULL pointers in
mempool_destroy().  But for the current -rc series let's keep things
simple.

This patch was lost in the cracks for a while.
Kevin Cernekee <cernekee@gmail.com> had to rediscover the problem and
send a similar patch because of it. :(

Signed-off-by: Joern Engel <joern@logfs.org>
  • Loading branch information
Joern Engel committed Apr 15, 2010
1 parent ead88af commit 1f1b000
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 7 deletions.
6 changes: 6 additions & 0 deletions fs/logfs/logfs.h
Original file line number Diff line number Diff line change
Expand Up @@ -727,4 +727,10 @@ static inline struct logfs_area *get_area(struct super_block *sb,
return logfs_super(sb)->s_area[(__force u8)gc_level];
}

static inline void logfs_mempool_destroy(mempool_t *pool)
{
if (pool)
mempool_destroy(pool);
}

#endif
6 changes: 2 additions & 4 deletions fs/logfs/readwrite.c
Original file line number Diff line number Diff line change
Expand Up @@ -2243,8 +2243,6 @@ void logfs_cleanup_rw(struct super_block *sb)
struct logfs_super *super = logfs_super(sb);

destroy_meta_inode(super->s_segfile_inode);
if (super->s_block_pool)
mempool_destroy(super->s_block_pool);
if (super->s_shadow_pool)
mempool_destroy(super->s_shadow_pool);
logfs_mempool_destroy(super->s_block_pool);
logfs_mempool_destroy(super->s_shadow_pool);
}
2 changes: 1 addition & 1 deletion fs/logfs/segment.c
Original file line number Diff line number Diff line change
Expand Up @@ -912,7 +912,7 @@ int logfs_init_areas(struct super_block *sb)
for (i--; i >= 0; i--)
free_area(super->s_area[i]);
free_area(super->s_journal_area);
mempool_destroy(super->s_alias_pool);
logfs_mempool_destroy(super->s_alias_pool);
return -ENOMEM;
}

Expand Down
4 changes: 2 additions & 2 deletions fs/logfs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -517,8 +517,8 @@ static void logfs_kill_sb(struct super_block *sb)
if (super->s_erase_page)
__free_page(super->s_erase_page);
super->s_devops->put_device(sb);
mempool_destroy(super->s_btree_pool);
mempool_destroy(super->s_alias_pool);
logfs_mempool_destroy(super->s_btree_pool);
logfs_mempool_destroy(super->s_alias_pool);
kfree(super);
log_super("LogFS: Finished unmounting\n");
}
Expand Down

0 comments on commit 1f1b000

Please sign in to comment.