The patch titled Subject: mm: return EBADF if pidfd is invalid has been added to the -mm tree. Its filename is mm-use-only-pidfd-for-process_madvise-syscall-fix.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-use-only-pidfd-for-process_madvise-syscall-fix.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-use-only-pidfd-for-process_madvise-syscall-fix.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Minchan Kim <minchan@xxxxxxxxxx> Subject: mm: return EBADF if pidfd is invalid This patch makes returning of EBADF when the fd passed as argument is invalid. The implementaion relies on pidfd_get_pid's error return. This patch also fixes syscall declare part since we removed pid support. Link: http://lkml.kernel.org/r/20200519181447.GA220547@xxxxxxxxxx Signed-off-by: Minchan Kim <minchan@xxxxxxxxxx> Cc: Suren Baghdasaryan <surenb@xxxxxxxxxx> Cc: Christian Brauner <christian.brauner@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- include/linux/compat.h | 6 +++--- include/linux/syscalls.h | 5 ++--- mm/madvise.c | 3 --- 3 files changed, 5 insertions(+), 9 deletions(-) --- a/include/linux/compat.h~mm-use-only-pidfd-for-process_madvise-syscall-fix +++ a/include/linux/compat.h @@ -827,10 +827,10 @@ asmlinkage long compat_sys_pwritev64v2(u unsigned long vlen, loff_t pos, rwf_t flags); #endif -asmlinkage ssize_t compat_sys_process_madvise(compat_int_t which, - compat_pid_t upid, const struct compat_iovec __user *vec, +asmlinkage ssize_t compat_sys_process_madvise(compat_int_t pidfd, + const struct compat_iovec __user *vec, compat_ulong_t vlen, compat_int_t behavior, - compat_ulong_t flags); + compat_int_t flags); /* * Deprecated system calls which are still defined in --- a/include/linux/syscalls.h~mm-use-only-pidfd-for-process_madvise-syscall-fix +++ a/include/linux/syscalls.h @@ -879,9 +879,8 @@ asmlinkage long sys_munlockall(void); asmlinkage long sys_mincore(unsigned long start, size_t len, unsigned char __user * vec); asmlinkage long sys_madvise(unsigned long start, size_t len, int behavior); -asmlinkage long sys_process_madvise(int which, pid_t upid, - const struct iovec __user *vec, unsigned long vlen, - int behavior, unsigned long flags); +asmlinkage long sys_process_madvise(int pidfd, const struct iovec __user *vec, + unsigned long vlen, int behavior, unsigned int flags); asmlinkage long sys_remap_file_pages(unsigned long start, unsigned long size, unsigned long prot, unsigned long pgoff, unsigned long flags); --- a/mm/madvise.c~mm-use-only-pidfd-for-process_madvise-syscall-fix +++ a/mm/madvise.c @@ -1242,9 +1242,6 @@ static ssize_t do_process_madvise(int pi if (flags != 0) return -EINVAL; - if (pidfd < 0) - return -EINVAL; - pid = pidfd_get_pid(pidfd); if (IS_ERR(pid)) return PTR_ERR(pid); _ Patches currently in -mm which might be from minchan@xxxxxxxxxx are mm-pass-task-and-mm-to-do_madvise.patch mm-introduce-external-memory-hinting-api.patch mm-introduce-external-memory-hinting-api-fix.patch mm-introduce-external-memory-hinting-api-fix-2.patch mm-check-fatal-signal-pending-of-target-process.patch pid-move-pidfd_get_pid-function-to-pidc.patch mm-support-both-pid-and-pidfd-for-process_madvise.patch mm-support-vector-address-ranges-for-process_madvise.patch mm-support-vector-address-ranges-for-process_madvise-fix.patch mm-support-vector-address-ranges-for-process_madvise-fix-fix-fix-fix.patch mm-use-only-pidfd-for-process_madvise-syscall.patch mm-use-only-pidfd-for-process_madvise-syscall-fix.patch