diff options
author | Anshuman Khandual <khandual@linux.vnet.ibm.com> | 2017-09-08 19:12:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-08 21:26:47 -0400 |
commit | fde26bed588918a11831841b219f74b20b32b080 (patch) | |
tree | ecbd7594f122ccd61572430616863592ddc7ef28 /mm/memory.c | |
parent | 656710a60e3693911bee3a355d2f2bbae3faba33 (diff) |
mm/memory.c: remove reduntant check for write access
Flags argument has been copied into vmf.flags and it is not changed in
between. Hence a single write access check can be used for both PUD and
PMD.
Link: http://lkml.kernel.org/r/20170823082839.1812-1-khandual@linux.vnet.ibm.com
Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memory.c')
-rw-r--r-- | mm/memory.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/mm/memory.c b/mm/memory.c index ad0ea1af1f44..7c521a6ec7c6 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -3961,6 +3961,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, | |||
3961 | .pgoff = linear_page_index(vma, address), | 3961 | .pgoff = linear_page_index(vma, address), |
3962 | .gfp_mask = __get_fault_gfp_mask(vma), | 3962 | .gfp_mask = __get_fault_gfp_mask(vma), |
3963 | }; | 3963 | }; |
3964 | unsigned int dirty = flags & FAULT_FLAG_WRITE; | ||
3964 | struct mm_struct *mm = vma->vm_mm; | 3965 | struct mm_struct *mm = vma->vm_mm; |
3965 | pgd_t *pgd; | 3966 | pgd_t *pgd; |
3966 | p4d_t *p4d; | 3967 | p4d_t *p4d; |
@@ -3983,7 +3984,6 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, | |||
3983 | 3984 | ||
3984 | barrier(); | 3985 | barrier(); |
3985 | if (pud_trans_huge(orig_pud) || pud_devmap(orig_pud)) { | 3986 | if (pud_trans_huge(orig_pud) || pud_devmap(orig_pud)) { |
3986 | unsigned int dirty = flags & FAULT_FLAG_WRITE; | ||
3987 | 3987 | ||
3988 | /* NUMA case for anonymous PUDs would go here */ | 3988 | /* NUMA case for anonymous PUDs would go here */ |
3989 | 3989 | ||
@@ -4020,8 +4020,7 @@ static int __handle_mm_fault(struct vm_area_struct *vma, unsigned long address, | |||
4020 | if (pmd_protnone(orig_pmd) && vma_is_accessible(vma)) | 4020 | if (pmd_protnone(orig_pmd) && vma_is_accessible(vma)) |
4021 | return do_huge_pmd_numa_page(&vmf, orig_pmd); | 4021 | return do_huge_pmd_numa_page(&vmf, orig_pmd); |
4022 | 4022 | ||
4023 | if ((vmf.flags & FAULT_FLAG_WRITE) && | 4023 | if (dirty && !pmd_write(orig_pmd)) { |
4024 | !pmd_write(orig_pmd)) { | ||
4025 | ret = wp_huge_pmd(&vmf, orig_pmd); | 4024 | ret = wp_huge_pmd(&vmf, orig_pmd); |
4026 | if (!(ret & VM_FAULT_FALLBACK)) | 4025 | if (!(ret & VM_FAULT_FALLBACK)) |
4027 | return ret; | 4026 | return ret; |