]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fs/squashfs: replace sqfs_decompress() parameter
authorJoao Marcos Costa <joaomarcos.costa@bootlin.com>
Tue, 18 Aug 2020 15:17:22 +0000 (17:17 +0200)
committerTom Rini <trini@konsulko.com>
Mon, 24 Aug 2020 18:11:31 +0000 (14:11 -0400)
Replace 'u16 comp_type' by a reference to squashfs_ctxt structure.

Signed-off-by: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
fs/squashfs/sqfs.c
fs/squashfs/sqfs_decompressor.c
fs/squashfs/sqfs_decompressor.h

index 598b42cd341422313cb35f42e40be2199ca98b77..9bd7b98d88a19fd8d2554cabaf6a95fb17b34466 100644 (file)
@@ -104,9 +104,7 @@ static int sqfs_frag_lookup(u32 inode_fragment_index,
        struct squashfs_super_block *sblk = ctxt.sblk;
        unsigned long dest_len;
        int block, offset, ret;
-       u16 header, comp_type;
-
-       comp_type = get_unaligned_le16(&sblk->compression);
+       u16 header;
 
        if (inode_fragment_index >= get_unaligned_le32(&sblk->fragments))
                return -EINVAL;
@@ -165,7 +163,7 @@ static int sqfs_frag_lookup(u32 inode_fragment_index,
        if (SQFS_COMPRESSED_METADATA(header)) {
                src_len = SQFS_METADATA_SIZE(header);
                dest_len = SQFS_METADATA_BLOCK_SIZE;
-               ret = sqfs_decompress(comp_type, entries, &dest_len, metadata,
+               ret = sqfs_decompress(&ctxt, entries, &dest_len, metadata,
                                      src_len);
                if (ret) {
                        ret = -EINVAL;
@@ -629,13 +627,12 @@ static int sqfs_read_inode_table(unsigned char **inode_table)
 {
        struct squashfs_super_block *sblk = ctxt.sblk;
        u64 start, n_blks, table_offset, table_size;
-       int j, ret = 0, metablks_count, comp_type;
+       int j, ret = 0, metablks_count;
        unsigned char *src_table, *itb;
        u32 src_len, dest_offset = 0;
        unsigned long dest_len;
        bool compressed;
 
-       comp_type = get_unaligned_le16(&sblk->compression);
        table_size = get_unaligned_le64(&sblk->directory_table_start) -
                get_unaligned_le64(&sblk->inode_table_start);
        start = get_unaligned_le64(&sblk->inode_table_start) /
@@ -680,7 +677,7 @@ static int sqfs_read_inode_table(unsigned char **inode_table)
                sqfs_read_metablock(itb, table_offset, &compressed, &src_len);
                if (compressed) {
                        dest_len = SQFS_METADATA_BLOCK_SIZE;
-                       ret = sqfs_decompress(comp_type, *inode_table +
+                       ret = sqfs_decompress(&ctxt, *inode_table +
                                              dest_offset, &dest_len,
                                              src_table, src_len);
                        if (ret) {
@@ -711,15 +708,13 @@ free_itb:
 static int sqfs_read_directory_table(unsigned char **dir_table, u32 **pos_list)
 {
        u64 start, n_blks, table_offset, table_size;
-       int j, ret = 0, metablks_count = -1, comp_type;
        struct squashfs_super_block *sblk = ctxt.sblk;
+       int j, ret = 0, metablks_count = -1;
        unsigned char *src_table, *dtb;
        u32 src_len, dest_offset = 0;
        unsigned long dest_len;
        bool compressed;
 
-       comp_type = get_unaligned_le16(&sblk->compression);
-
        /* DIRECTORY TABLE */
        table_size = get_unaligned_le64(&sblk->fragment_table_start) -
                get_unaligned_le64(&sblk->directory_table_start);
@@ -773,7 +768,7 @@ static int sqfs_read_directory_table(unsigned char **dir_table, u32 **pos_list)
                sqfs_read_metablock(dtb, table_offset, &compressed, &src_len);
                if (compressed) {
                        dest_len = SQFS_METADATA_BLOCK_SIZE;
-                       ret = sqfs_decompress(comp_type, *dir_table +
+                       ret = sqfs_decompress(&ctxt, *dir_table +
                                              (j * SQFS_METADATA_BLOCK_SIZE),
                                              &dest_len, src_table, src_len);
                        if (ret) {
@@ -1197,7 +1192,7 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
        char *dir, *fragment_block, *datablock = NULL, *data_buffer = NULL;
        char *fragment, *file, *resolved, *data;
        u64 start, n_blks, table_size, data_offset, table_offset;
-       int ret, j, i_number, comp_type, datablk_count = 0;
+       int ret, j, i_number, datablk_count = 0;
        struct squashfs_super_block *sblk = ctxt.sblk;
        struct squashfs_fragment_block_entry frag_entry;
        struct squashfs_file_info finfo = {0};
@@ -1213,8 +1208,6 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
 
        *actread = 0;
 
-       comp_type = get_unaligned_le16(&sblk->compression);
-
        /*
         * sqfs_opendir will uncompress inode and directory tables, and will
         * return a pointer to the directory that contains the requested file.
@@ -1346,7 +1339,7 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
                /* Load the data */
                if (SQFS_COMPRESSED_BLOCK(finfo.blk_sizes[j])) {
                        dest_len = get_unaligned_le32(&sblk->block_size);
-                       ret = sqfs_decompress(comp_type, datablock, &dest_len,
+                       ret = sqfs_decompress(&ctxt, datablock, &dest_len,
                                              data, table_size);
                        if (ret)
                                goto free_buffer;
@@ -1396,7 +1389,7 @@ int sqfs_read(const char *filename, void *buf, loff_t offset, loff_t len,
                        goto free_fragment;
                }
 
-               ret = sqfs_decompress(comp_type, fragment_block, &dest_len,
+               ret = sqfs_decompress(&ctxt, fragment_block, &dest_len,
                                      (void *)fragment  + table_offset,
                                      frag_entry.size);
                if (ret) {
index 633a8a18183c5a5da0018192c01cf40f5245ea0a..cf388ace587d512979b4660ecf35d51ba83dcce1 100644 (file)
@@ -62,9 +62,10 @@ static void zlib_decompression_status(int ret)
 }
 #endif
 
-int sqfs_decompress(u16 comp_type, void *dest, unsigned long *dest_len,
-                   void *source, u32 src_len)
+int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
+                   unsigned long *dest_len, void *source, u32 src_len)
 {
+       u16 comp_type = get_unaligned_le16(&ctxt->sblk->compression);
        int ret = 0;
 
        switch (comp_type) {
index 450257e5ceec791506376ef7cbd3a19940f75ef5..892cfb69744eb234917c9a2e74107c7e7fdbfb8b 100644 (file)
@@ -53,8 +53,8 @@ union squashfs_compression_opts {
        struct squashfs_lzo_opts *lzo;
 };
 
-int sqfs_decompress(u16 comp_type, void *dest, unsigned long *dest_len,
-                   void *source, u32 lenp);
+int sqfs_decompress(struct squashfs_ctxt *ctxt, void *dest,
+                   unsigned long *dest_len, void *source, u32 src_len);
 int sqfs_decompressor_init(struct squashfs_ctxt *ctxt);
 void sqfs_decompressor_cleanup(struct squashfs_ctxt *ctxt);