ANDROID: mm: fix speculative walk which is unsafe under RCU
Speculative page fault handling expects MMU_GATHER_RCU_TABLE_FREE to guarantee that page tables are stable, however tlb_remove_table() has a slow-path fall-back case when __get_free_page() returns NULL and tlb_remove_table_one() gets called. The way synchronization is implemented in that function is not RCU-safe and require IRQs to be disabled (see the comment in tlb_remove_table_sync_one()). Fix the invalid assumption to disable IRQs even when MMU_GATHER_RCU_TABLE_FREE=y. Bug: 257443051 Change-Id: I227f351607cf73022cb31f6f7a232cab41cf6a5a Signed-off-by:Suren Baghdasaryan <surenb@google.com> Signed-off-by:
Lee Jones <joneslee@google.com>
Loading
Please sign in to comment