[BUG] trigger BUG_ON in mas_store_prealloc when low memory

From: John Hsu (許永翰)
Date: Fri Jun 09 2023 - 04:39:07 EST


Hi reviewers and author liam.howlett@xxxxxxxxxx,
Kindly ping.

We met BUG_ON in mas_store_prealloc with kernel-6.1 stress testing
environment.
According to coredump, BUG_ON is triggered by mas->node with error
number -ENOMEM(0xffffffffffffffd2).
There are some mas_node_count functions in mas_wr_store_entry, and it
seems that mas->node may be set to error node with -ENOMEM if there was
no enough memory spcace for maple tree operations.
We think that return -ENOMEM instead of directly triggering BUG_ON when
memory is not available is suitable, because in reality the tree
operation shouldn't be performed in this situation.

following are the backtrace:
mas_store_prealloc+0x23c/0x484
vma_mas_store+0xe4/0x2d0
__vma_adjust+0xab0/0x1470
vma_merge+0x5b8/0x5d4
mprotect_fixup+0x1f4/0x478
__arm64_sys_mprotect+0x6b0/0x8f0
invoke_syscall+0x84/0x264
el0_svc_common+0x118/0x1f0
do_el0_svc+0x5c/0x184
el0_svc+0x38/0x98

Any suggestion is appreciated.

Thank you.
BRs,
John Hsu