From: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> In write_cache_pages(), we rely on PageLock to prevent writeback from starting on locked pages. I'm not sure if we document anywhere that pages that we're starting writes on must be locked, but having an assertion will make it clear to users that this is required. Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 3671568d433f..f83dd855594d 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -2774,6 +2774,8 @@ int __test_set_page_writeback(struct page *page, bool keep_write) struct address_space *mapping = page_mapping(page); int ret, access_ret; + VM_BUG_ON_PGFLAGS(!PageLocked(page), page); + lock_page_memcg(page); if (mapping && mapping_use_writeback_tags(mapping)) { XA_STATE(xas, &mapping->i_pages, page_index(page));