--- x/mm/oom_kill.c +++ y/mm/oom_kill.c @@ -997,6 +997,8 @@ static void __oom_kill_process(struct ta queue_oom_reaper(victim); mmdrop(mm); + write_lock_irq(&tasklist_lock); + write_unlock_irq(&tasklist_lock); put_task_struct(victim); } @@ -1031,6 +1033,8 @@ static void oom_kill_process(struct oom_ mark_oom_victim(victim); queue_oom_reaper(victim); task_unlock(victim); + write_lock_irq(&tasklist_lock); + write_unlock_irq(&tasklist_lock); put_task_struct(victim); return; } --- x/mm/page-writeback.c +++ y/mm/page-writeback.c @@ -3014,7 +3014,7 @@ bool __folio_end_writeback(struct folio if (mapping && mapping_use_writeback_tags(mapping)) { struct inode *inode = mapping->host; - struct bdi_writeback *wb = inode_to_wb(inode); + struct bdi_writeback *wb; unsigned long flags; xa_lock_irqsave(&mapping->i_pages, flags); @@ -3022,6 +3022,7 @@ bool __folio_end_writeback(struct folio __xa_clear_mark(&mapping->i_pages, folio_index(folio), PAGECACHE_TAG_WRITEBACK); + wb = inode_to_wb(inode); wb_stat_mod(wb, WB_WRITEBACK, -nr); __wb_writeout_add(wb, nr); if (!mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK)) { @@ -3054,7 +3055,7 @@ void __folio_start_writeback(struct foli if (mapping && mapping_use_writeback_tags(mapping)) { XA_STATE(xas, &mapping->i_pages, folio_index(folio)); struct inode *inode = mapping->host; - struct bdi_writeback *wb = inode_to_wb(inode); + struct bdi_writeback *wb; unsigned long flags; bool on_wblist; @@ -3065,6 +3066,7 @@ void __folio_start_writeback(struct foli on_wblist = mapping_tagged(mapping, PAGECACHE_TAG_WRITEBACK); xas_set_mark(&xas, PAGECACHE_TAG_WRITEBACK); + wb = inode_to_wb(inode); wb_stat_mod(wb, WB_WRITEBACK, nr); if (!on_wblist) { wb_inode_writeback_start(wb);