--- /dev/null
+From 145e1a71e090575c74969e3daa8136d1e5b99fc8 Mon Sep 17 00:00:00 2001
+From: Hugh Dickins <hughd@google.com>
+Date: Fri, 1 Jun 2018 16:50:50 -0700
+Subject: mm: fix the NULL mapping case in __isolate_lru_page()
+
+From: Hugh Dickins <hughd@google.com>
+
+commit 145e1a71e090575c74969e3daa8136d1e5b99fc8 upstream.
+
+George Boole would have noticed a slight error in 4.16 commit
+69d763fc6d3a ("mm: pin address_space before dereferencing it while
+isolating an LRU page"). Fix it, to match both the comment above it,
+and the original behaviour.
+
+Although anonymous pages are not marked PageDirty at first, we have an
+old habit of calling SetPageDirty when a page is removed from swap
+cache: so there's a category of ex-swap pages that are easily
+migratable, but were inadvertently excluded from compaction's async
+migration in 4.16.
+
+Link: http://lkml.kernel.org/r/alpine.LSU.2.11.1805302014001.12558@eggly.anvils
+Fixes: 69d763fc6d3a ("mm: pin address_space before dereferencing it while isolating an LRU page")
+Signed-off-by: Hugh Dickins <hughd@google.com>
+Acked-by: Minchan Kim <minchan@kernel.org>
+Acked-by: Mel Gorman <mgorman@techsingularity.net>
+Reported-by: Ivan Kalvachev <ikalvachev@gmail.com>
+Cc: "Huang, Ying" <ying.huang@intel.com>
+Cc: Jan Kara <jack@suse.cz>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ mm/vmscan.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
+@@ -1451,7 +1451,7 @@ int __isolate_lru_page(struct page *page
+ return ret;
+
+ mapping = page_mapping(page);
+- migrate_dirty = mapping && mapping->a_ops->migratepage;
++ migrate_dirty = !mapping || mapping->a_ops->migratepage;
+ unlock_page(page);
+ if (!migrate_dirty)
+ return ret;