From: Naoya Horiguchi Date: Tue, 7 Apr 2015 23:44:23 +0000 (+1000) Subject: mm/page-writeback: check-before-clear PageReclaim X-Git-Tag: KARO-TXA5-2015-06-26~18^2~330 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=9798b9c850618386080e75179b0f5a31c093e0f0;p=karo-tx-linux.git mm/page-writeback: check-before-clear PageReclaim With the page flag sanitization patchset, an invalid usage of ClearPageReclaim() is detected in set_page_dirty(). This can be called from __unmap_hugepage_range(), so let's check PageReclaim() before trying to clear it to avoid the misuse. Signed-off-by: Naoya Horiguchi Acked-by: Kirill A. Shutemov Signed-off-by: Andrew Morton --- diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 0372411f38fc..5daf5568b9e1 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -2228,7 +2228,8 @@ int set_page_dirty(struct page *page) * it will confuse readahead and make it restart the size rampup * process. But it's a trivial problem. */ - ClearPageReclaim(page); + if (PageReclaim(page)) + ClearPageReclaim(page); #ifdef CONFIG_BLOCK if (!spd) spd = __set_page_dirty_buffers;