Kernel 4.14: SQUASHFS error: xz decompression failed, data probably corrupt
From: Pintu Agarwal
Date: Mon Jun 14 2021 - 06:51:25 EST
Hi All,
With Kernel 4.14 we are getting squashfs error during bootup resulting
in kernel panic.
The details are below:
Device: ARM-32 board with Cortex-A7 (Single Core)
Storage: NAND Flash 512MiB
Kernel Version: 4.14.170 (maybe with some Linaro updates)
File system: Simple busybox with systemd (without Android)
File system type: UBIFS + SQUASHFS
UBI Volumes supported: rootfs (ro), others (rw)
-------------------
When we try to flash the UBI images and then try to boot the device,
we observe the below errors:
{{{
[ 5.608810] SQUASHFS error: xz decompression failed, data probably corrupt
[ 5.608846] SQUASHFS error: squashfs_read_data failed to read block 0x4d7ffe
[ 5.614745] SQUASHFS error: Unable to read data cache entry [4d7ffe]
[ 5.621939] SQUASHFS error: Unable to read page, block 4d7ffe, size 7a3c
[ 5.628274] SQUASHFS error: Unable to read data cache entry [4d7ffe]
[ 5.634934] SQUASHFS error: Unable to read page, block 4d7ffe, size 7a3c
[ 5.641309] SQUASHFS error: Unable to read data cache entry [4d7ffe]
[ 5.647954] SQUASHFS error: Unable to read page, block 4d7ffe, size 7a3c
[ 5.654304] SQUASHFS error: Unable to read data cache entry [4d7ffe]
[ 5.660977] SQUASHFS error: Unable to read page, block 4d7ffe, size 7a3c
[ 5.667309] SQUASHFS error: Unable to read data cache entry [4d7ffe]
[ 5.673997] SQUASHFS error: Unable to read page, block 4d7ffe, size 7a3c
[ 5.680497] Kernel panic - not syncing: Attempted to kill init!
exitcode=0x00007f00
[....]
}}}
We also observed that some of our Yocto build images will work and
boots fine, while sometimes the build images cause this issue.
So we wanted to know:
a) What could be the root cause of this issue ?
b) Is it related to squashfs ?
c) If yes, are there any fixes available already in the latest mainline ?
Please share some references.
Please let us know if anybody encountered this similar issue with
squashfs and how did you handle it ?
Note:
Our current commit in fs/squashfs is pointing at:
Squashfs: Compute expected length from inode size rather than block length
Thanks,
Pintu