Hongyu reported "id != index" in z_erofs_onlinepage_fixup() with
specific aarch64 environment easily, which wasn't shown before.
After digging into that, I found that high 32 bits of page->private
was set to 0xaaaaaaaa rather than 0 (due to z_erofs_onlinepage_init
behavior with specific compiler options). Actually we only use low
32 bits to keep the page information since page->private is only 4
bytes on most 32-bit platforms. However z_erofs_onlinepage_fixup()
uses the upper 32 bits by mistake.
Let's fix it now.
Reported-and-tested-by: Hongyu Jin <hongyu.jin@unisoc.com>
Fixes:
|
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| compress.h | ||
| data.c | ||
| decompressor.c | ||
| dir.c | ||
| erofs_fs.h | ||
| inode.c | ||
| internal.h | ||
| namei.c | ||
| super.c | ||
| tagptr.h | ||
| utils.c | ||
| xattr.c | ||
| xattr.h | ||
| zdata.c | ||
| zdata.h | ||
| zmap.c | ||
| zpvec.h | ||