Skip to content

Commit 82f9513

Browse files
howlettakpm00
authored andcommitted
mm/mprotect: fix do_mprotect_pkey() return on error
When the loop over the VMA is terminated early due to an error, the return code could be overwritten with ENOMEM. Fix the return code by only setting the error on early loop termination when the error is not set. User-visible effects include: attempts to run mprotect() against a special mapping or with a poorly-aligned hugetlb address should return -EINVAL, but they presently return -ENOMEM. In other cases an -EACCESS should be returned. Link: https://lkml.kernel.org/r/[email protected] Fixes: 2286a69 ("mm: change mprotect_fixup to vma iterator") Signed-off-by: Liam R. Howlett <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent dd47ac4 commit 82f9513

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

mm/mprotect.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
838838
}
839839
tlb_finish_mmu(&tlb);
840840

841-
if (vma_iter_end(&vmi) < end)
841+
if (!error && vma_iter_end(&vmi) < end)
842842
error = -ENOMEM;
843843

844844
out:

0 commit comments

Comments
 (0)