mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 20:52:45 +00:00 
			
		
		
		
	Kernel+Userland: Add mount MS_SRCHIDDEN option
Either we mount from a loop device or other source, the user might want to obfuscate the given source for security reasons, so this option will ensure this will happen. If passed during a mount, the source will be hidden when reading from the /sys/kernel/df node.
This commit is contained in:
		
							parent
							
								
									0739b5df11
								
							
						
					
					
						commit
						0734de9f9a
					
				
					 3 changed files with 21 additions and 11 deletions
				
			
		|  | @ -30,6 +30,7 @@ extern "C" { | |||
| #define MS_WXALLOWED (1 << 6) | ||||
| #define MS_AXALLOWED (1 << 7) | ||||
| #define MS_NOREGULAR (1 << 8) | ||||
| #define MS_SRCHIDDEN (1 << 9) | ||||
| 
 | ||||
| enum { | ||||
|     _SC_MONOTONIC_CLOCK, | ||||
|  |  | |||
|  | @ -5,6 +5,7 @@ | |||
|  */ | ||||
| 
 | ||||
| #include <AK/JsonObjectSerializer.h> | ||||
| #include <Kernel/API/POSIX/unistd.h> | ||||
| #include <Kernel/Devices/Loop/LoopDevice.h> | ||||
| #include <Kernel/FileSystem/FileBackedFileSystem.h> | ||||
| #include <Kernel/FileSystem/SysFS/Subsystems/Kernel/DiskUsage.h> | ||||
|  | @ -40,6 +41,9 @@ ErrorOr<void> SysFSDiskUsage::try_generate(KBufferBuilder& builder) | |||
|         TRY(fs_object.add("readonly"sv, fs.is_readonly())); | ||||
|         TRY(fs_object.add("mount_flags"sv, mount.flags())); | ||||
| 
 | ||||
|         if (mount.flags() & MS_SRCHIDDEN) { | ||||
|             TRY(fs_object.add("source"sv, "unknown")); | ||||
|         } else { | ||||
|             if (fs.is_file_backed()) { | ||||
|                 auto& file = static_cast<const FileBackedFileSystem&>(fs).file(); | ||||
|                 if (file.is_loop_device()) { | ||||
|  | @ -53,6 +57,7 @@ ErrorOr<void> SysFSDiskUsage::try_generate(KBufferBuilder& builder) | |||
|             } else { | ||||
|                 TRY(fs_object.add("source"sv, "none")); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         TRY(fs_object.finish()); | ||||
|         return {}; | ||||
|  |  | |||
|  | @ -43,6 +43,8 @@ static int parse_options(StringView options) | |||
|             flags |= MS_AXALLOWED; | ||||
|         else if (part == "noregular") | ||||
|             flags |= MS_NOREGULAR; | ||||
|         else if (part == "srchidden") | ||||
|             flags |= MS_SRCHIDDEN; | ||||
|         else | ||||
|             warnln("Ignoring invalid option: {}", part); | ||||
|     } | ||||
|  | @ -181,6 +183,8 @@ static ErrorOr<void> print_mounts() | |||
|             out(",nodev"); | ||||
|         if (mount_flags & MS_NOREGULAR) | ||||
|             out(",noregular"); | ||||
|         if (mount_flags & MS_SRCHIDDEN) | ||||
|             out(",srcobfuscate"); | ||||
|         if (mount_flags & MS_NOEXEC) | ||||
|             out(",noexec"); | ||||
|         if (mount_flags & MS_NOSUID) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Liav A
						Liav A