OSDN Git Service

mm: hwpoison: support recovery from ksm_might_need_to_copy()
[tomoyo/tomoyo-test1.git] / mm / mempolicy.c
index 61aa9ae..f940395 100644 (file)
@@ -600,7 +600,8 @@ static int queue_pages_hugetlb(pte_t *pte, unsigned long hmask,
 
        /* With MPOL_MF_MOVE, we migrate only unshared hugepage. */
        if (flags & (MPOL_MF_MOVE_ALL) ||
-           (flags & MPOL_MF_MOVE && page_mapcount(page) == 1)) {
+           (flags & MPOL_MF_MOVE && page_mapcount(page) == 1 &&
+            !hugetlb_pmd_shared(pte))) {
                if (isolate_hugetlb(page, qp->pagelist) &&
                        (flags & MPOL_MF_STRICT))
                        /*
@@ -1540,6 +1541,7 @@ SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, le
                 * the home node for vmas we already updated before.
                 */
                if (new->mode != MPOL_BIND && new->mode != MPOL_PREFERRED_MANY) {
+                       mpol_put(new);
                        err = -EOPNOTSUPP;
                        break;
                }