mm: do not access page->mapping directly on page_endio
[firefly-linux-kernel-4.4.55.git] / mm / filemap.c
index c33c31d75a2ba5c68bd13a10bd9333a00480b366..69f75c77c0982a6c0ecda29078c1bdebef6f80c5 100644 (file)
@@ -865,9 +865,12 @@ void page_endio(struct page *page, int rw, int err)
                unlock_page(page);
        } else { /* rw == WRITE */
                if (err) {
+                       struct address_space *mapping;
+
                        SetPageError(page);
-                       if (page->mapping)
-                               mapping_set_error(page->mapping, err);
+                       mapping = page_mapping(page);
+                       if (mapping)
+                               mapping_set_error(mapping, err);
                }
                end_page_writeback(page);
        }