x86: add tizen_qemu_x86_defconfig & tizen_qemu_x86_64_defconfig
[platform/kernel/linux-rpi.git] / mm / madvise.c
index 0734db8..6c099f8 100644 (file)
@@ -436,8 +436,11 @@ regular_page:
                        continue;
                }
 
-               /* Do not interfere with other mappings of this page */
-               if (page_mapcount(page) != 1)
+               /*
+                * Do not interfere with other mappings of this page and
+                * non-LRU page.
+                */
+               if (!PageLRU(page) || page_mapcount(page) != 1)
                        continue;
 
                VM_BUG_ON_PAGE(PageTransCompound(page), page);
@@ -968,6 +971,8 @@ static int madvise_inject_error(int behavior,
                        pr_info("Injecting memory failure for pfn %#lx at process virtual address %#lx\n",
                                 pfn, start);
                        ret = memory_failure(pfn, MF_COUNT_INCREASED);
+                       if (ret == -EOPNOTSUPP)
+                               ret = 0;
                }
 
                if (ret)
@@ -1294,8 +1299,7 @@ SYSCALL_DEFINE5(process_madvise, int, pidfd, const struct iovec __user *, vec,
                iov_iter_advance(&iter, iovec.iov_len);
        }
 
-       if (ret == 0)
-               ret = total_len - iov_iter_count(&iter);
+       ret = (total_len - iov_iter_count(&iter)) ? : ret;
 
 release_mm:
        mmput(mm);