arm64: hugetlb: fix the wrong return value for huge_ptep_set_access_flags
authorHuang Shijie <shijie.huang@arm.com>
Wed, 11 Jan 2017 06:02:00 +0000 (14:02 +0800)
committerAlex Shi <alex.shi@linaro.org>
Wed, 22 Mar 2017 10:00:13 +0000 (18:00 +0800)
In current code, the @changed always returns the last one's status for
the huge page with the contiguous bit set. This is really not what we
want. Even one of the PTEs is changed, we should tell it to the caller.

This patch fixes this issue.

Fixes: 66b3923a1a0f ("arm64: hugetlb: add support for PTE contiguous bit")
Cc: <stable@vger.kernel.org> # 4.5.x-
Signed-off-by: Huang Shijie <shijie.huang@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
(cherry picked from commit 69d012345a1a32d3f03957f14d972efccc106a98)
Signed-off-by: Alex Shi <alex.shi@linaro.org>
arch/arm64/mm/hugetlbpage.c

index 1af57cffcdeceb2a137135b368fecd175151b33d..019f13637fae50a5df5c2b59947c33a2cc9ad9a5 100644 (file)
@@ -239,7 +239,7 @@ int huge_ptep_set_access_flags(struct vm_area_struct *vma,
                ncontig = find_num_contig(vma->vm_mm, addr, cpte,
                                          *cpte, &pgsize);
                for (i = 0; i < ncontig; ++i, ++cpte, addr += pgsize) {
-                       changed = ptep_set_access_flags(vma, addr, cpte,
+                       changed |= ptep_set_access_flags(vma, addr, cpte,
                                                        pfn_pte(pfn,
                                                                hugeprot),
                                                        dirty);