With the refactored mlock code, introduce a new system call for mlock. The new call will allow the user to specify what lock states are being added. mlock2 is trivial at the moment, but a follow on patch will add a new mlock state making it useful.
Unified · Split
| @@ -382,3 +382,4 @@ · 381 unmodified lines | ||
| 382 | 382 | 373 i386 shutdown sys_shutdown |
| 383 | 383 | 374 i386 userfaultfd sys_userfaultfd |
| 384 | 384 | 375 i386 membarrier sys_membarrier |
| 385 | +376 i386 mlock2 sys_mlock2 | |
| @@ -331,6 +331,7 @@ · 330 unmodified lines | ||
| 331 | 331 | 322 64 execveat stub_execveat |
| 332 | 332 | 323 common userfaultfd sys_userfaultfd |
| 333 | 333 | 324 common membarrier sys_membarrier |
| 334 | +325 common mlock2 sys_mlock2 | |
| 334 | 335 | |
| 335 | 336 | # |
| 336 | 337 | # x32-specific system call numbers start at 512 to avoid cache impact |
| @@ -887,4 +887,6 @@ asmlinkage long sys_execveat(int dfd, const char __user *filename, · 886 unmodified lines | ||
| 887 | 887 | |
| 888 | 888 | asmlinkage long sys_membarrier(int cmd, int flags); |
| 889 | 889 | |
| 890 | +asmlinkage long sys_mlock2(unsigned long start, size_t len, int flags); | |
| 891 | + | |
| 890 | 892 | #endif |
| @@ -713,9 +713,11 @@ __SC_COMP(__NR_execveat, sys_execveat, compat_sys_execveat) · 712 unmodified lines | ||
| 713 | 713 | __SYSCALL(__NR_userfaultfd, sys_userfaultfd) |
| 714 | 714 | #define __NR_membarrier 283 |
| 715 | 715 | __SYSCALL(__NR_membarrier, sys_membarrier) |
| 716 | +#define __NR_mlock2 284 | |
| 717 | +__SYSCALL(__NR_mlock2, sys_mlock2) | |
| 716 | 718 | |
| 717 | 719 | #undef __NR_syscalls |
| 718 | −#define __NR_syscalls 284 | |
| 720 | +#define __NR_syscalls 285 | |
| 719 | 721 | |
| 720 | 722 | /* |
| 721 | 723 | * All syscalls below here should go away really, |
| @@ -194,6 +194,7 @@ cond_syscall(sys_mlock); · 193 unmodified lines | ||
| 194 | 194 | cond_syscall(sys_munlock); |
| 195 | 195 | cond_syscall(sys_mlockall); |
| 196 | 196 | cond_syscall(sys_munlockall); |
| 197 | +cond_syscall(sys_mlock2); | |
| 197 | 198 | cond_syscall(sys_mincore); |
| 198 | 199 | cond_syscall(sys_madvise); |
| 199 | 200 | cond_syscall(sys_mremap); |
| @@ -644,6 +644,14 @@ SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) · 643 unmodified lines | ||
| 644 | 644 | return do_mlock(start, len, VM_LOCKED); |
| 645 | 645 | } |
| 646 | 646 | |
| 647 | +SYSCALL_DEFINE3(mlock2, unsigned long, start, size_t, len, int, flags) | |
| 648 | +{ | |
| 649 | + if (flags) | |
| 650 | + return -EINVAL; | |
| 651 | + | |
| 652 | + return do_mlock(start, len, VM_LOCKED); | |
| 653 | +} | |
| 654 | + | |
| 647 | 655 | SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) |
| 648 | 656 | { |
| 649 | 657 | int ret; |