On Mon, Oct 16, 2023 at 02:38:20PM +0000, jeffxu@chromium.org wrote:
+#ifdef CONFIG_MSEAL
- /*
* bit masks for seal.
* need this since vm_flags is full.
*/
- unsigned long vm_seals; /* seal flags, see mm.h. */
"unsigned long" and yet:
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index c0cb22cd607d..f574c7dbee76 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -802,6 +802,8 @@ asmlinkage long sys_process_mrelease(int pidfd, unsigned int flags); asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, unsigned long prot, unsigned long pgoff, unsigned long flags); +asmlinkage long sys_mseal(unsigned long start, size_t len, unsigned int types,
unsigned int flags);
"unsigned int"?
Why the mis-match?
--- a/include/uapi/linux/mman.h +++ b/include/uapi/linux/mman.h @@ -55,4 +55,10 @@ struct cachestat { __u64 nr_recently_evicted; }; +#define MM_SEAL_MSEAL 0x1 +#define MM_SEAL_MPROTECT 0x2 +#define MM_SEAL_MUNMAP 0x4 +#define MM_SEAL_MMAP 0x8 +#define MM_SEAL_MREMAP 0x10
I think we can use the BIT() macro in uapi .h files now, it is _BITUL(). Might want to use it here too to make it obvious what is happening.
thanks,
greg k-h