aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/squashfs/block.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/fs/squashfs/block.c b/fs/squashfs/block.c
index a08048d17..14192fbbc 100644
--- a/fs/squashfs/block.c
+++ b/fs/squashfs/block.c
@@ -121,11 +121,12 @@ static void squashfs_process_blocks(struct squashfs_read_request *req)
if (req->data_processing == SQUASHFS_METADATA) {
/* Extract the length of the metadata block */
- if (req->offset != msblk->devblksize - 1)
- length = *((u16 *)(bh[0]->b_data + req->offset));
- else {
- length = bh[0]->b_data[req->offset];
- length |= bh[1]->b_data[0] << 8;
+ if (req->offset != msblk->devblksize - 1) {
+ length = le16_to_cpup((__le16 *)
+ (bh[0]->b_data + req->offset));
+ } else {
+ length = (unsigned char)bh[0]->b_data[req->offset];
+ length |= (unsigned char)bh[1]->b_data[0] << 8;
}
req->compressed = SQUASHFS_COMPRESSED(length);
req->data_processing = req->compressed ? SQUASHFS_DECOMPRESS