在 2024/12/20 01:40, Dan Carpenter 写道:
On Thu, Dec 19, 2024 at 10:44:12AM +1030, Qu Wenruo wrote:
在 2024/12/19 06:37, Qu Wenruo 写道:
在 2024/12/19 02:22, Naresh Kamboju 写道:
On Wed, 18 Dec 2024 at 17:33, Naresh Kamboju naresh.kamboju@linaro.org wrote:
The following kernel crash noticed on qemu-arm64 while running the Linux next-20241210 tag (to next-20241218) kernel built with - CONFIG_ARM64_64K_PAGES=y - CONFIG_ARM64_16K_PAGES=y and running LTP smoke tests.
First seen on Linux next-20241210. Good: next-20241209 Bad: next-20241210 and next-20241218
qemu-arm64: 9.1.2
Anyone noticed this ?
Anders bisected this reported regression and found, # first bad commit: [9c1d66793b6faa00106ae4c866359578bfc012d2] btrfs: validate system chunk array at btrfs_validate_super()
Weird, I run daily fstests with 64K page sized aarch64 VM.
But never hit a crash on this.
And the original crash call trace only points back to ext4, not btrfs.
Yeah. But it's in the memory allocator so it looks like memory corruption. After the ext4 crash then random other stuff starts crashing as well when it allocates memory.
Mind to test it with KASAN enabled?
Anders is going to try that later and report back.
Another thing is, how do you enable both 16K and 64K page size at the same time?
The Kconfig should only select one page size IIRC.
Right. We tested 4k, 16k and 64k. 4k pages worked.
And for the bisection, does it focus on the test failure or the crash?
The crash.
For the failure part, I got the reason, it's indeed the patch, where we call btrfs_check_chunk_valid() but fs_info->sectorsize is still in the default value (4096), not the real one from the superblock.
Thus it will always report false alerts if the on-disk super block is not using 4K sectorsize.
I'll fix it soon.
But sorry I didn't see why the false alert is related to the crash, the only new memory allocation done in that patch is for a dummy extent buffer, which should always be freed.
Anyway in the next version I'll get rid of the memory allocation completely.
Thanks, Qu
regards, dan carpenter