mirror of
https://github.com/choff/anbox-modules.git
synced 2026-10-18 01:05:47 +08:00
Since Linux 6.13 the list_lru walk callback no longer receives the lru lock; it lives in struct list_lru_one. binder_alloc_free_page_no_lock() passes NULL as the lock, so binder_alloc_free_page() ends up calling spin_unlock(NULL) as soon as kswapd runs the binder shrinker: BUG: kernel NULL pointer dereference, address: 0000000000000000 RIP: 0010:_raw_spin_unlock+0x9/0x40 Call Trace: binder_alloc_free_page+0xe1/0x360 [binder_linux] __list_lru_walk_one+0xdf/0x230 list_lru_walk_node+0x52/0x230 binder_shrink_scan+0xa7/0x100 [binder_linux] do_shrink_slab+0x154/0x3a0 ... kswapd+0x1e2/0x360 The machine then hangs, typically under memory pressure, right after resuming from suspend, or while writing a hibernation image. Fall back to &lru->lock when no lock is passed, as upstream binder does. |
||
|---|---|---|
| .. | ||
| binder_alloc.c | ||
| binder_alloc.h | ||
| binder_internal.h | ||
| binder_trace.h | ||
| binder.c | ||
| binder.h | ||
| binderfs.c | ||
| compat_version.h | ||
| deps.c | ||
| deps.h | ||
| dkms.conf | ||
| Makefile | ||