From: Kirill Tkhai <ktkhai@virtuozzo.com>
To: akpm@linux-foundation.org, dan.j.williams@intel.com,
ktkhai@virtuozzo.com, mhocko@suse.com, keith.busch@intel.com,
kirill.shutemov@linux.intel.com, pasha.tatashin@oracle.com,
alexander.h.duyck@linux.intel.com, ira.weiny@intel.com,
andreyknvl@google.com, arunks@codeaurora.org, vbabka@suse.cz,
cl@linux.com, riel@surriel.com, keescook@chromium.org,
hannes@cmpxchg.org, npiggin@gmail.com,
mathieu.desnoyers@efficios.com, shakeelb@google.com, guro@fb.com,
aarcange@redhat.com, hughd@google.com, jglisse@redhat.com,
mgorman@techsingularity.net, daniel.m.jordan@oracle.com,
linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH RFC 1/5] mm: Add process_vm_mmap() syscall declaration
Date: Wed, 15 May 2019 18:11:22 +0300 [thread overview]
Message-ID: <155793308232.13922.18307403112092259417.stgit@localhost.localdomain> (raw)
In-Reply-To: <155793276388.13922.18064660723547377633.stgit@localhost.localdomain>
Similar to process_vm_readv() and process_vm_writev(),
add declarations of a new syscall, which will allow
to map memory from or to another process.
Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
---
arch/x86/entry/syscalls/syscall_32.tbl | 1 +
arch/x86/entry/syscalls/syscall_64.tbl | 2 ++
include/linux/syscalls.h | 5 +++++
include/uapi/asm-generic/unistd.h | 5 ++++-
init/Kconfig | 9 +++++----
kernel/sys_ni.c | 2 ++
6 files changed, 19 insertions(+), 5 deletions(-)
diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl
index 4cd5f982b1e5..bf8cc5de918f 100644
--- a/arch/x86/entry/syscalls/syscall_32.tbl
+++ b/arch/x86/entry/syscalls/syscall_32.tbl
@@ -438,3 +438,4 @@
425 i386 io_uring_setup sys_io_uring_setup __ia32_sys_io_uring_setup
426 i386 io_uring_enter sys_io_uring_enter __ia32_sys_io_uring_enter
427 i386 io_uring_register sys_io_uring_register __ia32_sys_io_uring_register
+428 i386 process_vm_mmap sys_process_vm_mmap __ia32_compat_sys_process_vm_mmap
diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
index 64ca0d06259a..5af619c2d512 100644
--- a/arch/x86/entry/syscalls/syscall_64.tbl
+++ b/arch/x86/entry/syscalls/syscall_64.tbl
@@ -355,6 +355,7 @@
425 common io_uring_setup __x64_sys_io_uring_setup
426 common io_uring_enter __x64_sys_io_uring_enter
427 common io_uring_register __x64_sys_io_uring_register
+428 common process_vm_mmap __x64_sys_process_vm_mmap
#
# x32-specific system call numbers start at 512 to avoid cache impact
@@ -398,3 +399,4 @@
545 x32 execveat __x32_compat_sys_execveat/ptregs
546 x32 preadv2 __x32_compat_sys_preadv64v2
547 x32 pwritev2 __x32_compat_sys_pwritev64v2
+548 x32 process_vm_mmap __x32_compat_sys_process_vm_mmap
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index e2870fe1be5b..7d8ae36589cf 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -997,6 +997,11 @@ asmlinkage long sys_fspick(int dfd, const char __user *path, unsigned int flags)
asmlinkage long sys_pidfd_send_signal(int pidfd, int sig,
siginfo_t __user *info,
unsigned int flags);
+asmlinkage long sys_process_vm_mmap(pid_t pid,
+ unsigned long src_addr,
+ unsigned long len,
+ unsigned long dst_addr,
+ unsigned long flags);
/*
* Architecture-specific system calls
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index dee7292e1df6..1273d86bf546 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -832,9 +832,12 @@ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
__SYSCALL(__NR_io_uring_enter, sys_io_uring_enter)
#define __NR_io_uring_register 427
__SYSCALL(__NR_io_uring_register, sys_io_uring_register)
+#define __NR_process_vm_mmap 428
+__SC_COMP(__NR_process_vm_mmap, sys_process_vm_mmap, \
+ compat_sys_process_vm_mmap)
#undef __NR_syscalls
-#define __NR_syscalls 428
+#define __NR_syscalls 429
/*
* 32 bit systems traditionally used different
diff --git a/init/Kconfig b/init/Kconfig
index 8b9ffe236e4f..604db5f14718 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -320,13 +320,14 @@ config POSIX_MQUEUE_SYSCTL
default y
config CROSS_MEMORY_ATTACH
- bool "Enable process_vm_readv/writev syscalls"
+ bool "Enable process_vm_readv/writev/mmap syscalls"
depends on MMU
default y
help
- Enabling this option adds the system calls process_vm_readv and
- process_vm_writev which allow a process with the correct privileges
- to directly read from or write to another process' address space.
+ Enabling this option adds the system calls process_vm_readv,
+ process_vm_writev and process_vm_mmap, which allow a process
+ with the correct privileges to directly read from or write to
+ or mmap another process' address space.
See the man page for more details.
config USELIB
diff --git a/kernel/sys_ni.c b/kernel/sys_ni.c
index 4d9ae5ea6caf..6f51634f4f7e 100644
--- a/kernel/sys_ni.c
+++ b/kernel/sys_ni.c
@@ -316,6 +316,8 @@ COND_SYSCALL(process_vm_readv);
COND_SYSCALL_COMPAT(process_vm_readv);
COND_SYSCALL(process_vm_writev);
COND_SYSCALL_COMPAT(process_vm_writev);
+COND_SYSCALL(process_vm_mmap);
+COND_SYSCALL_COMPAT(process_vm_mmap);
/* compare kernel pointers */
COND_SYSCALL(kcmp);
next prev parent reply other threads:[~2019-05-15 15:12 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-15 15:11 [PATCH RFC 0/5] mm: process_vm_mmap() -- syscall for duplication a process mapping Kirill Tkhai
2019-05-15 15:11 ` Kirill Tkhai [this message]
2019-05-15 15:11 ` [PATCH RFC 2/5] mm: Extend copy_vma() Kirill Tkhai
2019-05-15 15:11 ` [PATCH RFC 3/5] mm: Extend copy_page_range() Kirill Tkhai
2019-05-15 15:11 ` [PATCH RFC 4/5] mm: Export round_hint_to_min() Kirill Tkhai
2019-05-15 15:11 ` [PATCH RFC 5/5] mm: Add process_vm_mmap() Kirill Tkhai
2019-05-15 18:29 ` Kees Cook
2019-05-16 12:54 ` Kirill Tkhai
2019-05-15 18:46 ` [PATCH RFC 0/5] mm: process_vm_mmap() -- syscall for duplication a process mapping Jann Horn
2019-05-15 18:46 ` Jann Horn
2019-05-16 13:02 ` Kirill Tkhai
2019-05-16 13:14 ` Jann Horn
2019-05-16 13:14 ` Jann Horn
2019-05-15 19:38 ` Adam Borowski
2019-05-16 13:10 ` Kirill Tkhai
2019-05-16 13:42 ` Adam Borowski
2019-05-16 14:25 ` Kirill Tkhai
2019-05-16 13:30 ` Michal Hocko
2019-05-16 13:52 ` Michal Hocko
2019-05-16 14:22 ` Kirill Tkhai
2019-05-16 13:32 ` Jann Horn
2019-05-16 13:32 ` Jann Horn
2019-05-16 13:32 ` Jann Horn
2019-05-16 13:56 ` Kirill Tkhai
2019-05-16 13:56 ` Kirill Tkhai
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=155793308232.13922.18307403112092259417.stgit@localhost.localdomain \
--to=ktkhai@virtuozzo.com \
--cc=aarcange@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.h.duyck@linux.intel.com \
--cc=andreyknvl@google.com \
--cc=arunks@codeaurora.org \
--cc=cl@linux.com \
--cc=dan.j.williams@intel.com \
--cc=daniel.m.jordan@oracle.com \
--cc=guro@fb.com \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=ira.weiny@intel.com \
--cc=jglisse@redhat.com \
--cc=keescook@chromium.org \
--cc=keith.busch@intel.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=npiggin@gmail.com \
--cc=pasha.tatashin@oracle.com \
--cc=riel@surriel.com \
--cc=shakeelb@google.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.