diff options
author | Phillip Lougher <phillip@lougher.demon.co.uk> | 2009-09-23 20:04:49 +0200 |
---|---|---|
committer | Phillip Lougher <phillip@lougher.demon.co.uk> | 2010-01-20 22:47:47 +0100 |
commit | f1a40359f8d8ba073257ed31a513e492621bcbc5 (patch) | |
tree | 313f81085e0e3e3606cecf4cc6ed4ead59cea3ee /fs/squashfs/super.c | |
parent | Squashfs: move zlib decompression wrapper code into a separate file (diff) | |
download | linux-f1a40359f8d8ba073257ed31a513e492621bcbc5.tar.xz linux-f1a40359f8d8ba073257ed31a513e492621bcbc5.zip |
Squashfs: factor out remaining zlib dependencies into separate wrapper file
Move zlib buffer init/destroy code into separate wrapper file. Also
make zlib z_stream field a void * removing the need to include zlib.h
for most files.
Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
Diffstat (limited to 'fs/squashfs/super.c')
-rw-r--r-- | fs/squashfs/super.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/fs/squashfs/super.c b/fs/squashfs/super.c index 6c197ef53add..b9f8c6a92d6a 100644 --- a/fs/squashfs/super.c +++ b/fs/squashfs/super.c @@ -35,7 +35,6 @@ #include <linux/pagemap.h> #include <linux/init.h> #include <linux/module.h> -#include <linux/zlib.h> #include <linux/magic.h> #include "squashfs_fs.h" @@ -87,12 +86,9 @@ static int squashfs_fill_super(struct super_block *sb, void *data, int silent) } msblk = sb->s_fs_info; - msblk->stream.workspace = kmalloc(zlib_inflate_workspacesize(), - GFP_KERNEL); - if (msblk->stream.workspace == NULL) { - ERROR("Failed to allocate zlib workspace\n"); + msblk->stream = squashfs_zlib_init(); + if (msblk->stream == NULL) goto failure; - } sblk = kzalloc(sizeof(*sblk), GFP_KERNEL); if (sblk == NULL) { @@ -292,17 +288,17 @@ failed_mount: squashfs_cache_delete(msblk->block_cache); squashfs_cache_delete(msblk->fragment_cache); squashfs_cache_delete(msblk->read_page); + squashfs_zlib_free(msblk->stream); kfree(msblk->inode_lookup_table); kfree(msblk->fragment_index); kfree(msblk->id_table); - kfree(msblk->stream.workspace); kfree(sb->s_fs_info); sb->s_fs_info = NULL; kfree(sblk); return err; failure: - kfree(msblk->stream.workspace); + squashfs_zlib_free(msblk->stream); kfree(sb->s_fs_info); sb->s_fs_info = NULL; return -ENOMEM; @@ -346,10 +342,10 @@ static void squashfs_put_super(struct super_block *sb) squashfs_cache_delete(sbi->block_cache); squashfs_cache_delete(sbi->fragment_cache); squashfs_cache_delete(sbi->read_page); + squashfs_zlib_free(sbi->stream); kfree(sbi->id_table); kfree(sbi->fragment_index); kfree(sbi->meta_index); - kfree(sbi->stream.workspace); kfree(sb->s_fs_info); sb->s_fs_info = NULL; } |