Commit 4f4dc3a9 authored by Amir Goldstein's avatar Amir Goldstein Committed by Jan Kara
Browse files

Revert "mm: don't allow huge faults for files with pre content watches"

parent 955fbe0e
Loading
Loading
Loading
Loading
+0 −19
Original line number Diff line number Diff line
@@ -76,7 +76,6 @@
#include <linux/ptrace.h>
#include <linux/vmalloc.h>
#include <linux/sched/sysctl.h>
#include <linux/fsnotify.h>

#include <trace/events/kmem.h>

@@ -5750,17 +5749,8 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf)
{
	struct vm_area_struct *vma = vmf->vma;

	if (vma_is_anonymous(vma))
		return do_huge_pmd_anonymous_page(vmf);
	/*
	 * Currently we just emit PAGE_SIZE for our fault events, so don't allow
	 * a huge fault if we have a pre content watch on this file.  This would
	 * be trivial to support, but there would need to be tests to ensure
	 * this works properly and those don't exist currently.
	 */
	if (unlikely(FMODE_FSNOTIFY_HSM(vma->vm_file->f_mode)))
		return VM_FAULT_FALLBACK;
	if (vma->vm_ops->huge_fault)
		return vma->vm_ops->huge_fault(vmf, PMD_ORDER);
	return VM_FAULT_FALLBACK;
@@ -5784,9 +5774,6 @@ static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf)
	}

	if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) {
		/* See comment in create_huge_pmd. */
		if (unlikely(FMODE_FSNOTIFY_HSM(vma->vm_file->f_mode)))
			goto split;
		if (vma->vm_ops->huge_fault) {
			ret = vma->vm_ops->huge_fault(vmf, PMD_ORDER);
			if (!(ret & VM_FAULT_FALLBACK))
@@ -5809,9 +5796,6 @@ static vm_fault_t create_huge_pud(struct vm_fault *vmf)
	/* No support for anonymous transparent PUD pages yet */
	if (vma_is_anonymous(vma))
		return VM_FAULT_FALLBACK;
	/* See comment in create_huge_pmd. */
	if (unlikely(FMODE_FSNOTIFY_HSM(vma->vm_file->f_mode)))
		return VM_FAULT_FALLBACK;
	if (vma->vm_ops->huge_fault)
		return vma->vm_ops->huge_fault(vmf, PUD_ORDER);
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
@@ -5829,9 +5813,6 @@ static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud)
	if (vma_is_anonymous(vma))
		goto split;
	if (vma->vm_flags & (VM_SHARED | VM_MAYSHARE)) {
		/* See comment in create_huge_pmd. */
		if (unlikely(FMODE_FSNOTIFY_HSM(vma->vm_file->f_mode)))
			goto split;
		if (vma->vm_ops->huge_fault) {
			ret = vma->vm_ops->huge_fault(vmf, PUD_ORDER);
			if (!(ret & VM_FAULT_FALLBACK))