diff options
author | David Hildenbrand <david@redhat.com> | 2022-11-16 11:26:43 +0100 |
---|---|---|
committer | Andrew Morton <akpm@linux-foundation.org> | 2022-12-01 00:58:57 +0100 |
commit | cdc5021cda194112bc0962d6a0e90b379968c504 (patch) | |
tree | 12c5231ee46f8a17f2b12d6c80a021c866d2723b /mm/huge_memory.c | |
parent | selftests/vm: cow: R/O long-term pinning reliability tests for non-anon pages (diff) | |
download | linux-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.c | 3 |
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; |