diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2019-11-25 17:27:06 +0000 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2020-09-04 12:46:07 +0100 |
commit | c462ac288f2c97e0c1d9ff6a65955317e799f958 (patch) | |
tree | ac7e3391d1688a5520c0f182fc60dd038b8033b6 /mm/mprotect.c | |
parent | 9f3419315f3cdc41a7318e4d50ba18a592b30c8c (diff) | |
download | lwn-c462ac288f2c97e0c1d9ff6a65955317e799f958.tar.gz lwn-c462ac288f2c97e0c1d9ff6a65955317e799f958.zip |
mm: Introduce arch_validate_flags()
Similarly to arch_validate_prot() called from do_mprotect_pkey(), an
architecture may need to sanity-check the new vm_flags.
Define a dummy function always returning true. In addition to
do_mprotect_pkey(), also invoke it from mmap_region() prior to updating
vma->vm_page_prot to allow the architecture code to veto potentially
inconsistent vm_flags.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/mprotect.c')
-rw-r--r-- | mm/mprotect.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/mm/mprotect.c b/mm/mprotect.c index ce8b8a5eacbb..56c02beb6041 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -603,6 +603,12 @@ static int do_mprotect_pkey(unsigned long start, size_t len, goto out; } + /* Allow architectures to sanity-check the new flags */ + if (!arch_validate_flags(newflags)) { + error = -EINVAL; + goto out; + } + error = security_file_mprotect(vma, reqprot, prot); if (error) goto out; |