Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm: unexport vm_brk_flags() and eliminate vm_flags parameter

This function is only used by elf_load(), and that is a static function
that doesn't need an exported symbol to invoke an internal function, so
un-EXPORT_SYMBOLS() it.

Also, the vm_flags parameter is unnecessary, as we only ever set VM_EXEC,
so simply make this parameter a boolean.

While we're here, clean up the mm.h definitions for the various vm_xxx()
helpers so we actually specify parameter names and elide the redundant
extern's.

Link: https://lkml.kernel.org/r/7bada48ddf3f9dbd3e6c4fc50ec2f4de97706f52.1774034900.git.ljs@kernel.org
Signed-off-by: Lorenzo Stoakes (Oracle) <ljs@kernel.org>
Acked-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
Cc: Albert Ou <aou@eecs.berkeley.edu>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Cc: "Borislav Petkov (AMD)" <bp@alien8.de>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Dinh Nguyen <dinguyen@kernel.org>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Huacai Chen <chenhuacai@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jann Horn <jannh@google.com>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: Kees Cook <kees@kernel.org>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Ondrej Mosnacek <omosnace@redhat.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Paul Moore <paul@paul-moore.com>
Cc: Pedro Falcato <pfalcato@suse.de>
Cc: Richard Weinberger <richard@nod.at>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Stephen Smalley <stephen.smalley.work@gmail.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Vineet Gupta <vgupta@kernel.org>
Cc: WANG Xuerui <kernel@xen0n.name>
Cc: Will Deacon <will@kernel.org>
Cc: xu xin <xu.xin16@zte.com.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Lorenzo Stoakes (Oracle) and committed by
Andrew Morton
5fb55e95 b22a48ec

+9 -14
+1 -2
fs/binfmt_elf.c
··· 453 453 zero_end = ELF_PAGEALIGN(zero_end); 454 454 455 455 error = vm_brk_flags(zero_start, zero_end - zero_start, 456 - prot & PROT_EXEC ? VM_EXEC : 0); 456 + prot & PROT_EXEC); 457 457 if (error) 458 458 map_addr = error; 459 459 } 460 460 return map_addr; 461 461 } 462 - 463 462 464 463 static unsigned long total_mapping_size(const struct elf_phdr *phdr, int nr) 465 464 {
+6 -6
include/linux/mm.h
··· 3991 3991 #endif 3992 3992 3993 3993 /* This takes the mm semaphore itself */ 3994 - extern int __must_check vm_brk_flags(unsigned long, unsigned long, unsigned long); 3995 - extern int vm_munmap(unsigned long, size_t); 3996 - extern unsigned long __must_check vm_mmap(struct file *, unsigned long, 3997 - unsigned long, unsigned long, 3998 - unsigned long, unsigned long); 3999 - extern unsigned long __must_check vm_mmap_shadow_stack(unsigned long addr, 3994 + int __must_check vm_brk_flags(unsigned long addr, unsigned long request, bool is_exec); 3995 + int vm_munmap(unsigned long start, size_t len); 3996 + unsigned long __must_check vm_mmap(struct file *file, unsigned long addr, 3997 + unsigned long len, unsigned long prot, 3998 + unsigned long flag, unsigned long offset); 3999 + unsigned long __must_check vm_mmap_shadow_stack(unsigned long addr, 4000 4000 unsigned long len, unsigned long flags); 4001 4001 4002 4002 struct vm_unmapped_area_info {
+2 -6
mm/mmap.c
··· 1201 1201 return ret; 1202 1202 } 1203 1203 1204 - int vm_brk_flags(unsigned long addr, unsigned long request, vm_flags_t vm_flags) 1204 + int vm_brk_flags(unsigned long addr, unsigned long request, bool is_exec) 1205 1205 { 1206 + const vm_flags_t vm_flags = is_exec ? VM_EXEC : 0; 1206 1207 struct mm_struct *mm = current->mm; 1207 1208 struct vm_area_struct *vma = NULL; 1208 1209 unsigned long len; ··· 1217 1216 return -ENOMEM; 1218 1217 if (!len) 1219 1218 return 0; 1220 - 1221 - /* Until we need other flags, refuse anything except VM_EXEC. */ 1222 - if ((vm_flags & (~VM_EXEC)) != 0) 1223 - return -EINVAL; 1224 1219 1225 1220 if (mmap_write_lock_killable(mm)) 1226 1221 return -EINTR; ··· 1243 1246 mmap_write_unlock(mm); 1244 1247 return ret; 1245 1248 } 1246 - EXPORT_SYMBOL(vm_brk_flags); 1247 1249 1248 1250 static 1249 1251 unsigned long tear_down_vmas(struct mm_struct *mm, struct vma_iterator *vmi,