Update to 3.4-final.
[linux-flexiantxendom0-3.2.10.git] / mm / madvise.c
index ecde40a..1ccbba5 100644 (file)
@@ -65,6 +65,12 @@ static long madvise_behavior(struct vm_area_struct * vma,
                }
                new_flags &= ~VM_DONTCOPY;
                break;
+       case MADV_DONTDUMP:
+               new_flags |= VM_NODUMP;
+               break;
+       case MADV_DODUMP:
+               new_flags &= ~VM_NODUMP;
+               break;
        case MADV_MERGEABLE:
        case MADV_UNMERGEABLE:
                error = ksm_madvise(vma, start, end, behavior, &new_flags);
@@ -72,7 +78,8 @@ static long madvise_behavior(struct vm_area_struct * vma,
                        goto out;
                break;
        case MADV_HUGEPAGE:
-               error = hugepage_madvise(&new_flags);
+       case MADV_NOHUGEPAGE:
+               error = hugepage_madvise(vma, &new_flags, behavior);
                if (error)
                        goto out;
                break;
@@ -217,7 +224,7 @@ static long madvise_remove(struct vm_area_struct *vma,
        endoff = (loff_t)(end - vma->vm_start - 1)
                        + ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
 
-       /* vmtruncate_range needs to take i_mutex and i_alloc_sem */
+       /* vmtruncate_range needs to take i_mutex */
        up_read(&current->mm->mmap_sem);
        error = vmtruncate_range(mapping->host, offset, endoff);
        down_read(&current->mm->mmap_sem);
@@ -250,7 +257,7 @@ static int madvise_hwpoison(int bhv, unsigned long start, unsigned long end)
                printk(KERN_INFO "Injecting memory failure for page %lx at %lx\n",
                       page_to_pfn(p), start);
                /* Ignore return value for now */
-               __memory_failure(page_to_pfn(p), 0, MF_COUNT_INCREASED);
+               memory_failure(page_to_pfn(p), 0, MF_COUNT_INCREASED);
        }
        return ret;
 }
@@ -290,7 +297,10 @@ madvise_behavior_valid(int behavior)
 #endif
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
        case MADV_HUGEPAGE:
+       case MADV_NOHUGEPAGE:
 #endif
+       case MADV_DONTDUMP:
+       case MADV_DODUMP:
                return 1;
 
        default: