forked from mirrors/linux
		
	vfs: Suppress MS_* flag defs within the kernel unless explicitly enabled
Only the mount namespace code that implements mount(2) should be using the MS_* flags. Suppress them inside the kernel unless uapi/linux/mount.h is included. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Reviewed-by: David Howells <dhowells@redhat.com>
This commit is contained in:
		
							parent
							
								
									26cb5a328c
								
							
						
					
					
						commit
						e262e32d6b
					
				
					 18 changed files with 79 additions and 51 deletions
				
			
		|  | @ -19,6 +19,7 @@ | |||
| #include <linux/of_fdt.h> | ||||
| #include <linux/of.h> | ||||
| #include <linux/cache.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include <asm/sections.h> | ||||
| #include <asm/arcregs.h> | ||||
| #include <asm/tlb.h> | ||||
|  |  | |||
|  | @ -24,6 +24,7 @@ | |||
| #include <linux/root_dev.h> | ||||
| #include <linux/screen_info.h> | ||||
| #include <linux/memblock.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include <asm/setup.h> | ||||
| #include <asm/system_info.h> | ||||
|  |  | |||
|  | @ -32,6 +32,7 @@ | |||
| #include <linux/of.h> | ||||
| #include <linux/of_fdt.h> | ||||
| #include <linux/uaccess.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include <asm/io.h> | ||||
| #include <asm/page.h> | ||||
| #include <asm/elf.h> | ||||
|  |  | |||
|  | @ -34,6 +34,7 @@ | |||
| #include <linux/kdebug.h> | ||||
| #include <linux/export.h> | ||||
| #include <linux/start_kernel.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include <asm/io.h> | ||||
| #include <asm/processor.h> | ||||
|  |  | |||
|  | @ -33,6 +33,7 @@ | |||
| #include <linux/module.h> | ||||
| #include <linux/start_kernel.h> | ||||
| #include <linux/memblock.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include <asm/io.h> | ||||
| #include <asm/processor.h> | ||||
|  |  | |||
|  | @ -50,6 +50,7 @@ | |||
| #include <linux/kvm_para.h> | ||||
| #include <linux/dma-contiguous.h> | ||||
| #include <xen/xen.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include <linux/errno.h> | ||||
| #include <linux/kernel.h> | ||||
|  |  | |||
|  | @ -25,6 +25,7 @@ | |||
| #include <linux/sched.h> | ||||
| #include <linux/slab.h> | ||||
| #include <linux/kthread.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include "base.h" | ||||
| 
 | ||||
| static struct task_struct *thread; | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ | |||
| #include <linux/memblock.h> | ||||
| #include <linux/task_work.h> | ||||
| #include <linux/sched/task.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "pnode.h" | ||||
| #include "internal.h" | ||||
|  |  | |||
|  | @ -10,6 +10,7 @@ | |||
| #include <linux/mount.h> | ||||
| #include <linux/fs.h> | ||||
| #include <linux/nsproxy.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include "internal.h" | ||||
| #include "pnode.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -35,6 +35,7 @@ | |||
| #include <linux/fsnotify.h> | ||||
| #include <linux/lockdep.h> | ||||
| #include <linux/user_namespace.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include "internal.h" | ||||
| 
 | ||||
| static int thaw_super_locked(struct super_block *sb); | ||||
|  |  | |||
|  | @ -14,6 +14,11 @@ | |||
| #include <linux/ioctl.h> | ||||
| #include <linux/types.h> | ||||
| 
 | ||||
| /* Use of MS_* flags within the kernel is restricted to core mount(2) code. */ | ||||
| #if !defined(__KERNEL__) | ||||
| #include <linux/mount.h> | ||||
| #endif | ||||
| 
 | ||||
| /*
 | ||||
|  * It's silly to have NR_OPEN bigger than NR_FILE, but you can change | ||||
|  * the file limit at runtime and only root can increase the per-process | ||||
|  | @ -101,57 +106,6 @@ struct inodes_stat_t { | |||
| 
 | ||||
| #define NR_FILE  8192	/* this can well be larger on a larger system */ | ||||
| 
 | ||||
| 
 | ||||
| /*
 | ||||
|  * These are the fs-independent mount-flags: up to 32 flags are supported | ||||
|  */ | ||||
| #define MS_RDONLY	 1	/* Mount read-only */ | ||||
| #define MS_NOSUID	 2	/* Ignore suid and sgid bits */ | ||||
| #define MS_NODEV	 4	/* Disallow access to device special files */ | ||||
| #define MS_NOEXEC	 8	/* Disallow program execution */ | ||||
| #define MS_SYNCHRONOUS	16	/* Writes are synced at once */ | ||||
| #define MS_REMOUNT	32	/* Alter flags of a mounted FS */ | ||||
| #define MS_MANDLOCK	64	/* Allow mandatory locks on an FS */ | ||||
| #define MS_DIRSYNC	128	/* Directory modifications are synchronous */ | ||||
| #define MS_NOATIME	1024	/* Do not update access times. */ | ||||
| #define MS_NODIRATIME	2048	/* Do not update directory access times */ | ||||
| #define MS_BIND		4096 | ||||
| #define MS_MOVE		8192 | ||||
| #define MS_REC		16384 | ||||
| #define MS_VERBOSE	32768	/* War is peace. Verbosity is silence. | ||||
| 				   MS_VERBOSE is deprecated. */ | ||||
| #define MS_SILENT	32768 | ||||
| #define MS_POSIXACL	(1<<16)	/* VFS does not apply the umask */ | ||||
| #define MS_UNBINDABLE	(1<<17)	/* change to unbindable */ | ||||
| #define MS_PRIVATE	(1<<18)	/* change to private */ | ||||
| #define MS_SLAVE	(1<<19)	/* change to slave */ | ||||
| #define MS_SHARED	(1<<20)	/* change to shared */ | ||||
| #define MS_RELATIME	(1<<21)	/* Update atime relative to mtime/ctime. */ | ||||
| #define MS_KERNMOUNT	(1<<22) /* this is a kern_mount call */ | ||||
| #define MS_I_VERSION	(1<<23) /* Update inode I_version field */ | ||||
| #define MS_STRICTATIME	(1<<24) /* Always perform atime updates */ | ||||
| #define MS_LAZYTIME	(1<<25) /* Update the on-disk [acm]times lazily */ | ||||
| 
 | ||||
| /* These sb flags are internal to the kernel */ | ||||
| #define MS_SUBMOUNT     (1<<26) | ||||
| #define MS_NOREMOTELOCK	(1<<27) | ||||
| #define MS_NOSEC	(1<<28) | ||||
| #define MS_BORN		(1<<29) | ||||
| #define MS_ACTIVE	(1<<30) | ||||
| #define MS_NOUSER	(1<<31) | ||||
| 
 | ||||
| /*
 | ||||
|  * Superblock flags that can be altered by MS_REMOUNT | ||||
|  */ | ||||
| #define MS_RMT_MASK	(MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION|\ | ||||
| 			 MS_LAZYTIME) | ||||
| 
 | ||||
| /*
 | ||||
|  * Old magic mount flag and mask | ||||
|  */ | ||||
| #define MS_MGC_VAL 0xC0ED0000 | ||||
| #define MS_MGC_MSK 0xffff0000 | ||||
| 
 | ||||
| /*
 | ||||
|  * Structure for FS_IOC_FSGETXATTR[A] and FS_IOC_FSSETXATTR. | ||||
|  */ | ||||
|  |  | |||
							
								
								
									
										58
									
								
								include/uapi/linux/mount.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								include/uapi/linux/mount.h
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | |||
| #ifndef _UAPI_LINUX_MOUNT_H | ||||
| #define _UAPI_LINUX_MOUNT_H | ||||
| 
 | ||||
| /*
 | ||||
|  * These are the fs-independent mount-flags: up to 32 flags are supported | ||||
|  * | ||||
|  * Usage of these is restricted within the kernel to core mount(2) code and | ||||
|  * callers of sys_mount() only.  Filesystems should be using the SB_* | ||||
|  * equivalent instead. | ||||
|  */ | ||||
| #define MS_RDONLY	 1	/* Mount read-only */ | ||||
| #define MS_NOSUID	 2	/* Ignore suid and sgid bits */ | ||||
| #define MS_NODEV	 4	/* Disallow access to device special files */ | ||||
| #define MS_NOEXEC	 8	/* Disallow program execution */ | ||||
| #define MS_SYNCHRONOUS	16	/* Writes are synced at once */ | ||||
| #define MS_REMOUNT	32	/* Alter flags of a mounted FS */ | ||||
| #define MS_MANDLOCK	64	/* Allow mandatory locks on an FS */ | ||||
| #define MS_DIRSYNC	128	/* Directory modifications are synchronous */ | ||||
| #define MS_NOATIME	1024	/* Do not update access times. */ | ||||
| #define MS_NODIRATIME	2048	/* Do not update directory access times */ | ||||
| #define MS_BIND		4096 | ||||
| #define MS_MOVE		8192 | ||||
| #define MS_REC		16384 | ||||
| #define MS_VERBOSE	32768	/* War is peace. Verbosity is silence. | ||||
| 				   MS_VERBOSE is deprecated. */ | ||||
| #define MS_SILENT	32768 | ||||
| #define MS_POSIXACL	(1<<16)	/* VFS does not apply the umask */ | ||||
| #define MS_UNBINDABLE	(1<<17)	/* change to unbindable */ | ||||
| #define MS_PRIVATE	(1<<18)	/* change to private */ | ||||
| #define MS_SLAVE	(1<<19)	/* change to slave */ | ||||
| #define MS_SHARED	(1<<20)	/* change to shared */ | ||||
| #define MS_RELATIME	(1<<21)	/* Update atime relative to mtime/ctime. */ | ||||
| #define MS_KERNMOUNT	(1<<22) /* this is a kern_mount call */ | ||||
| #define MS_I_VERSION	(1<<23) /* Update inode I_version field */ | ||||
| #define MS_STRICTATIME	(1<<24) /* Always perform atime updates */ | ||||
| #define MS_LAZYTIME	(1<<25) /* Update the on-disk [acm]times lazily */ | ||||
| 
 | ||||
| /* These sb flags are internal to the kernel */ | ||||
| #define MS_SUBMOUNT     (1<<26) | ||||
| #define MS_NOREMOTELOCK	(1<<27) | ||||
| #define MS_NOSEC	(1<<28) | ||||
| #define MS_BORN		(1<<29) | ||||
| #define MS_ACTIVE	(1<<30) | ||||
| #define MS_NOUSER	(1<<31) | ||||
| 
 | ||||
| /*
 | ||||
|  * Superblock flags that can be altered by MS_REMOUNT | ||||
|  */ | ||||
| #define MS_RMT_MASK	(MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION|\ | ||||
| 			 MS_LAZYTIME) | ||||
| 
 | ||||
| /*
 | ||||
|  * Old magic mount flag and mask | ||||
|  */ | ||||
| #define MS_MGC_VAL 0xC0ED0000 | ||||
| #define MS_MGC_MSK 0xffff0000 | ||||
| 
 | ||||
| #endif /* _UAPI_LINUX_MOUNT_H */ | ||||
|  | @ -22,6 +22,7 @@ | |||
| #include <linux/nfs_fs.h> | ||||
| #include <linux/nfs_fs_sb.h> | ||||
| #include <linux/nfs_mount.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "do_mounts.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ | |||
| #include <linux/sched.h> | ||||
| #include <linux/freezer.h> | ||||
| #include <linux/kmod.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "do_mounts.h" | ||||
| 
 | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ | |||
| #include <linux/netfilter_ipv4.h> | ||||
| #include <linux/netfilter_ipv6.h> | ||||
| #include <net/sock.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "include/apparmor.h" | ||||
| #include "include/apparmorfs.h" | ||||
|  |  | |||
|  | @ -15,6 +15,7 @@ | |||
| #include <linux/fs.h> | ||||
| #include <linux/mount.h> | ||||
| #include <linux/namei.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "include/apparmor.h" | ||||
| #include "include/audit.h" | ||||
|  |  | |||
|  | @ -88,6 +88,7 @@ | |||
| #include <linux/msg.h> | ||||
| #include <linux/shm.h> | ||||
| #include <linux/bpf.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| 
 | ||||
| #include "avc.h" | ||||
| #include "objsec.h" | ||||
|  |  | |||
|  | @ -6,6 +6,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include <linux/slab.h> | ||||
| #include <uapi/linux/mount.h> | ||||
| #include "common.h" | ||||
| 
 | ||||
| /* String table for special mount operations. */ | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 David Howells
						David Howells