summaryrefslogtreecommitdiffstats
path: root/mm/huge_memory.c
diff options
context:
space:
mode:
authorDavid Hildenbrand <david@redhat.com>2022-11-16 11:26:43 +0100
committerAndrew Morton <akpm@linux-foundation.org>2022-12-01 00:58:57 +0100
commitcdc5021cda194112bc0962d6a0e90b379968c504 (patch)
tree12c5231ee46f8a17f2b12d6c80a021c866d2723b /mm/huge_memory.c
parentselftests/vm: cow: R/O long-term pinning reliability tests for non-anon pages (diff)
downloadlinux-cdc5021cda194112bc0962d6a0e90b379968c504.tar.xz
linux-cdc5021cda194112bc0962d6a0e90b379968c504.zip
mm: add early FAULT_FLAG_UNSHARE consistency checks
For now, FAULT_FLAG_UNSHARE only applies to anonymous pages, which implies a COW mapping. Let's hide FAULT_FLAG_UNSHARE early if we're not dealing with a COW mapping, such that we treat it like a read fault as documented and don't have to worry about the flag throughout all fault handlers. While at it, centralize the check for mutual exclusion of FAULT_FLAG_UNSHARE and FAULT_FLAG_WRITE and just drop the check that either flag is set in the WP handler. Link: https://lkml.kernel.org/r/20221116102659.70287-5-david@redhat.com Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/huge_memory.c')
-rw-r--r--mm/huge_memory.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 29102e3ddf84..5eb702726a0e 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1313,9 +1313,6 @@ vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf)
vmf->ptl = pmd_lockptr(vma->vm_mm, vmf->pmd);
VM_BUG_ON_VMA(!vma->anon_vma, vma);
- VM_BUG_ON(unshare && (vmf->flags & FAULT_FLAG_WRITE));
- VM_BUG_ON(!unshare && !(vmf->flags & FAULT_FLAG_WRITE));
-
if (is_huge_zero_pmd(orig_pmd))
goto fallback;