From: Andrew Morton <akpm@linux-foundation.org> To: arjunroy@google.com, bgeffon@google.com, dancol@google.com, hannes@cmpxchg.org, joaodias@google.com, joel@joelfernandes.org, mhocko@suse.com, minchan@kernel.org, mm-commits@vger.kernel.org, oleksandr@redhat.com, rientjes@google.com, shakeelb@google.com, sj38.park@gmail.com, sonnyrao@google.com, sspatil@google.com, surenb@google.com, timmurray@google.com, vbabka@suse.cz Subject: + mm-support-vector-address-ranges-for-process_madvise-fix.patch added to -mm tree Date: Thu, 23 Apr 2020 15:44:23 -0700 Message-ID: <20200423224423.qb8oLW8UR%akpm@linux-foundation.org> (raw) In-Reply-To: <20200420181310.c18b3c0aa4dc5b3e5ec1be10@linux-foundation.org> The patch titled Subject: mm: support compat_sys_process_madvise has been added to the -mm tree. Its filename is mm-support-vector-address-ranges-for-process_madvise-fix.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/mm-support-vector-address-ranges-for-process_madvise-fix.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/mm-support-vector-address-ranges-for-process_madvise-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@kernel.org> Subject: mm: support compat_sys_process_madvise This patch supports compat syscall for process_madvise Link: http://lkml.kernel.org/r/20200423195835.GA46847@google.com Signed-off-by: Minchan Kim <minchan@kernel.org> Cc: Arjun Roy <arjunroy@google.com> Cc: Brian Geffon <bgeffon@google.com> Cc: Daniel Colascione <dancol@google.com> Cc: David Rientjes <rientjes@google.com> Cc: Joel Fernandes <joel@joelfernandes.org> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: John Dias <joaodias@google.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Oleksandr Natalenko <oleksandr@redhat.com> Cc: Sandeep Patil <sspatil@google.com> Cc: SeongJae Park <sj38.park@gmail.com> Cc: Shakeel Butt <shakeelb@google.com> Cc: Sonny Rao <sonnyrao@google.com> Cc: Suren Baghdasaryan <surenb@google.com> Cc: Tim Murray <timmurray@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- arch/arm64/include/asm/unistd32.h | 2 arch/mips/kernel/syscalls/syscall_n32.tbl | 2 arch/parisc/kernel/syscalls/syscall.tbl | 2 arch/powerpc/kernel/syscalls/syscall.tbl | 2 arch/s390/kernel/syscalls/syscall.tbl | 2 arch/sparc/kernel/syscalls/syscall.tbl | 2 arch/x86/entry/syscalls/syscall_32.tbl | 2 arch/x86/entry/syscalls/syscall_64.tbl | 3 - include/linux/compat.h | 3 + include/uapi/asm-generic/unistd.h | 3 - kernel/sys_ni.c | 1 mm/madvise.c | 60 +++++++++++++++----- 12 files changed, 60 insertions(+), 24 deletions(-) --- a/arch/arm64/include/asm/unistd32.h~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/arm64/include/asm/unistd32.h @@ -884,7 +884,7 @@ __SYSCALL(__NR_openat2, sys_openat2) #define __NR_pidfd_getfd 438 __SYSCALL(__NR_pidfd_getfd, sys_pidfd_getfd) #define __NR_process_madvise 439 -__SYSCALL(__NR_process_madvise, sys_process_madvise) +__SYSCALL(__NR_process_madvise, compat_sys_process_madvise) /* * Please add new compat syscalls above this comment and update --- a/arch/mips/kernel/syscalls/syscall_n32.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/mips/kernel/syscalls/syscall_n32.tbl @@ -376,4 +376,4 @@ 435 n32 clone3 __sys_clone3 437 n32 openat2 sys_openat2 438 n32 pidfd_getfd sys_pidfd_getfd -439 n32 process_madvise sys_process_madvise +439 n32 process_madvise compat_sys_process_madvise --- a/arch/parisc/kernel/syscalls/syscall.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/parisc/kernel/syscalls/syscall.tbl @@ -435,4 +435,4 @@ 435 common clone3 sys_clone3_wrapper 437 common openat2 sys_openat2 438 common pidfd_getfd sys_pidfd_getfd -439 common process_madvise sys_process_madvise +439 common process_madvise sys_process_madvise compat_sys_process_madvise --- a/arch/powerpc/kernel/syscalls/syscall.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/powerpc/kernel/syscalls/syscall.tbl @@ -527,4 +527,4 @@ 435 spu clone3 sys_ni_syscall 437 common openat2 sys_openat2 438 common pidfd_getfd sys_pidfd_getfd -439 common process_madvise sys_process_madvise +439 common process_madvise sys_process_madvise compat_sys_process_madvise --- a/arch/s390/kernel/syscalls/syscall.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/s390/kernel/syscalls/syscall.tbl @@ -440,4 +440,4 @@ 435 common clone3 sys_clone3 sys_clone3 437 common openat2 sys_openat2 sys_openat2 438 common pidfd_getfd sys_pidfd_getfd sys_pidfd_getfd -439 common process_madvise sys_process_madvise sys_process_madvise +439 common process_madvise sys_process_madvise compat_sys_process_madvise --- a/arch/sparc/kernel/syscalls/syscall.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/sparc/kernel/syscalls/syscall.tbl @@ -483,4 +483,4 @@ # 435 reserved for clone3 437 common openat2 sys_openat2 438 common pidfd_getfd sys_pidfd_getfd -439 common process_madvise sys_process_madvise +439 common process_madvise sys_process_madvise compat_sys_process_madvise --- a/arch/x86/entry/syscalls/syscall_32.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/x86/entry/syscalls/syscall_32.tbl @@ -442,4 +442,4 @@ 435 i386 clone3 sys_clone3 437 i386 openat2 sys_openat2 438 i386 pidfd_getfd sys_pidfd_getfd -439 i386 process_madvise sys_process_madvise +439 i386 process_madvise sys_process_madvise compat_sys_process_madvise --- a/arch/x86/entry/syscalls/syscall_64.tbl~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/arch/x86/entry/syscalls/syscall_64.tbl @@ -359,7 +359,7 @@ 435 common clone3 sys_clone3 437 common openat2 sys_openat2 438 common pidfd_getfd sys_pidfd_getfd -439 common process_madvise sys_process_madvise +439 64 process_madvise sys_process_madvise # # x32-specific system call numbers start at 512 to avoid cache impact @@ -403,3 +403,4 @@ 545 x32 execveat compat_sys_execveat 546 x32 preadv2 compat_sys_preadv64v2 547 x32 pwritev2 compat_sys_pwritev64v2 +548 x32 process_madvise compat_sys_process_madvise --- a/include/linux/compat.h~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/include/linux/compat.h @@ -820,6 +820,9 @@ asmlinkage long compat_sys_pwritev64v2(u unsigned long vlen, loff_t pos, rwf_t flags); #endif +asmlinkage ssize_t compat_sys_process_madvise(int which, + compat_pid_t upid, const struct compat_iovec __user *vec, + unsigned long vlen, int behavior, unsigned long flags); /* * Deprecated system calls which are still defined in --- a/include/uapi/asm-generic/unistd.h~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/include/uapi/asm-generic/unistd.h @@ -856,7 +856,8 @@ __SYSCALL(__NR_openat2, sys_openat2) #define __NR_pidfd_getfd 438 __SYSCALL(__NR_pidfd_getfd, sys_pidfd_getfd) #define __NR_process_madvise 439 -__SYSCALL(__NR_process_madvise, sys_process_madvise) +__SC_COMP(__NR_process_madvise, sys_process_madvise, \ + compat_sys_process_madvise) #undef __NR_syscalls #define __NR_syscalls 440 --- a/kernel/sys_ni.c~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/kernel/sys_ni.c @@ -281,6 +281,7 @@ COND_SYSCALL(munlockall); COND_SYSCALL(mincore); COND_SYSCALL(madvise); COND_SYSCALL(process_madvise); +COND_SYSCALL_COMPAT(process_madvise); COND_SYSCALL(remap_file_pages); COND_SYSCALL(mbind); COND_SYSCALL_COMPAT(mbind); --- a/mm/madvise.c~mm-support-vector-address-ranges-for-process_madvise-fix +++ a/mm/madvise.c @@ -1195,7 +1195,7 @@ SYSCALL_DEFINE3(madvise, unsigned long, return do_madvise(current, current->mm, start, len_in, behavior); } -static int do_process_madvise(struct task_struct *target_task, +static int process_madvise_vec(struct task_struct *target_task, struct mm_struct *mm, struct iov_iter *iter, int behavior) { struct iovec iovec; @@ -1213,17 +1213,14 @@ static int do_process_madvise(struct tas return ret; } -SYSCALL_DEFINE6(process_madvise, int, which, pid_t, upid, - const struct iovec __user *, vec, unsigned long, vlen, - int, behavior, unsigned long, flags) +ssize_t do_process_madvise(int which, pid_t upid, struct iov_iter *iter, + int behavior, unsigned long flags) { ssize_t ret; struct pid *pid; struct task_struct *task; struct mm_struct *mm; - struct iovec iovstack[UIO_FASTIOV]; - struct iovec *iov = iovstack; - struct iov_iter iter; + size_t total_len = iov_iter_count(iter); if (flags != 0) return -EINVAL; @@ -1267,15 +1264,10 @@ SYSCALL_DEFINE6(process_madvise, int, wh goto release_task; } - ret = import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), &iov, &iter); - if (ret >= 0) { - size_t total_len = iov_iter_count(&iter); + ret = process_madvise_vec(task, mm, iter, behavior); + if (ret >= 0) + ret = total_len - iov_iter_count(iter); - ret = do_process_madvise(task, mm, &iter, behavior); - if (ret >= 0) - ret = total_len - iov_iter_count(&iter); - kfree(iov); - } mmput(mm); release_task: put_task_struct(task); @@ -1283,3 +1275,41 @@ put_pid: put_pid(pid); return ret; } + +SYSCALL_DEFINE6(process_madvise, int, which, pid_t, upid, + const struct iovec __user *, vec, unsigned long, vlen, + int, behavior, unsigned long, flags) +{ + ssize_t ret; + struct iovec iovstack[UIO_FASTIOV]; + struct iovec *iov = iovstack; + struct iov_iter iter; + + ret = import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), &iov, &iter); + if (ret >= 0) { + ret = do_process_madvise(which, upid, &iter, behavior, flags); + kfree(iov); + } + return ret; +} + +#ifdef CONFIG_COMPAT +COMPAT_SYSCALL_DEFINE6(process_madvise, int, which, compat_pid_t, upid, + const struct compat_iovec __user *, vec, unsigned long, vlen, + int, behavior, unsigned long, flags) + +{ + ssize_t ret; + struct iovec iovstack[UIO_FASTIOV]; + struct iovec *iov = iovstack; + struct iov_iter iter; + + ret = compat_import_iovec(READ, vec, vlen, ARRAY_SIZE(iovstack), + &iov, &iter); + if (ret >= 0) { + ret = do_process_madvise(which, upid, &iter, behavior, flags); + kfree(iov); + } + return ret; +} +#endif _ Patches currently in -mm which might be from minchan@kernel.org are mm-pass-task-and-mm-to-do_madvise.patch mm-pass-task-and-mm-to-do_madvise-fix.patch mm-introduce-external-memory-hinting-api.patch mm-introduce-external-memory-hinting-api-fix.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
next prev parent reply index Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-21 1:13 incoming Andrew Morton 2020-04-21 1:13 ` [patch 01/15] sh: fix build error in mm/init.c Andrew Morton 2020-04-21 1:13 ` [patch 02/15] slub: avoid redzone when choosing freepointer location Andrew Morton 2020-04-21 1:13 ` [patch 03/15] mm/userfaultfd: disable userfaultfd-wp on x86_32 Andrew Morton 2020-04-21 1:13 ` [patch 04/15] MAINTAINERS: add an entry for kfifo Andrew Morton 2020-04-21 1:13 ` [patch 05/15] mm/hugetlb: fix a addressing exception caused by huge_pte_offset Andrew Morton 2020-04-21 1:13 ` [patch 06/15] mm, gup: return EINTR when gup is interrupted by fatal signals Andrew Morton 2020-04-21 1:13 ` [patch 07/15] checkpatch: fix a typo in the regex for $allocFunctions Andrew Morton 2020-04-21 1:14 ` [patch 08/15] tools/build: tweak unused value workaround Andrew Morton 2020-04-21 1:14 ` [patch 09/15] mm/ksm: fix NULL pointer dereference when KSM zero page is enabled Andrew Morton 2020-04-21 1:14 ` [patch 10/15] mm/shmem: fix build without THP Andrew Morton 2020-04-21 1:14 ` [patch 11/15] vmalloc: fix remap_vmalloc_range() bounds checks Andrew Morton 2020-04-21 1:14 ` [patch 12/15] shmem: fix possible deadlocks on shmlock_user_lock Andrew Morton 2020-04-21 1:14 ` [patch 13/15] mm: shmem: disable interrupt when acquiring info->lock in userfaultfd_copy path Andrew Morton 2020-04-21 1:14 ` [patch 14/15] coredump: fix null pointer dereference on coredump Andrew Morton 2020-04-21 1:14 ` [patch 15/15] tools/vm: fix cross-compile build Andrew Morton 2020-04-21 2:00 ` + mm-memory_hotplug-refrain-from-adding-memory-into-an-impossible-node.patch added to -mm tree Andrew Morton 2020-04-21 2:48 ` + x86-mm-define-mm_p4d_folded.patch " Andrew Morton 2020-04-21 2:52 ` + mm-debug-add-tests-validating-architecture-page-table-helpers-v17.patch " Andrew Morton 2020-04-21 2:59 ` + mm-mmapc-add-more-sanity-checks-to-get_unmapped_area.patch " Andrew Morton 2020-04-21 2:59 ` + mm-mmapc-do-not-allow-mappings-outside-of-allowed-limits.patch " Andrew Morton 2020-04-21 3:07 ` + initrdmem=-option-to-specify-initrd-physical-address-checkpatch-fixes.patch " Andrew Morton 2020-04-21 3:58 ` + initrdmem=-option-to-specify-initrd-physical-address.patch " Andrew Morton 2020-04-21 5:43 ` mmotm 2020-04-20-22-43 uploaded Andrew Morton 2020-04-22 1:36 ` + mm-swapfilec-found_free-could-be-represented-by-tmp-max.patch added to -mm tree Andrew Morton 2020-04-22 1:36 ` + mm-swapfilec-tmp-is-always-smaller-than-max.patch " Andrew Morton 2020-04-22 1:36 ` + mm-swapfilec-omit-a-duplicate-code-by-compare-tmp-and-max-first.patch " Andrew Morton 2020-04-23 22:36 ` + kasan-initialise-array-in-kasan_memcmp-test.patch " Andrew Morton 2020-04-23 22:38 ` + kvm-svm-change-flag-passed-to-gup-fast-in-sev_pin_memory.patch " Andrew Morton 2020-04-23 22:41 ` + mm-pass-task-and-mm-to-do_madvise-fix.patch " Andrew Morton 2020-04-23 22:44 ` + mm-support-vector-address-ranges-for-process_madvise.patch " Andrew Morton 2020-04-23 22:44 ` Andrew Morton [this message] 2020-04-23 22:48 ` + kasan-stop-tests-being-eliminated-as-dead-code-with-fortify_source.patch " Andrew Morton 2020-04-23 22:48 ` + stringh-fix-incompatibility-between-fortify_source-and-kasan.patch " Andrew Morton 2020-04-23 23:03 ` + powerpc-add-support-for-folded-p4d-page-tables-fix.patch " Andrew Morton 2020-04-23 23:09 ` [folded-merged] memcg-optimize-memorynuma_stat-like-memorystat-fix.patch removed from " Andrew Morton 2020-04-23 23:32 ` + slub-remove-userspace-notifier-for-cache-add-remove.patch added to " Andrew Morton 2020-04-23 23:35 ` + ocfs2-mount-shared-volume-without-ha-stack.patch " Andrew Morton 2020-04-24 0:29 ` + mm-memory_hotplug-handle-memblocks-only-with-config_arch_keep_memblock.patch " Andrew Morton 2020-04-24 1:17 ` + mm-return-true-in-cpupid_pid_unset.patch " Andrew Morton 2020-04-24 1:20 ` + kernel-better-document-the-use_mm-unuse_mm-api-contract-v2-fix.patch " Andrew Morton 2020-04-24 1:40 ` + mm-thp-rename-pmd_mknotpresent-as-pmd_mkinvalid-v2.patch " Andrew Morton 2020-04-24 1:47 ` + ipc-convert-ipcs_idr-to-xarray-update.patch " Andrew Morton [not found] ` <20200605195848.GB5393@lca.pw> [not found] ` <20200605201134.GJ19604@bombadil.infradead.org> 2020-06-05 21:20 ` Andrew Morton 2020-12-30 15:44 ` Manfred Spraul 2020-04-24 2:06 ` + powerpc-spufs-simplify-spufs-core-dumping.patch " Andrew Morton 2020-04-24 2:06 ` + signal-factor-copy_siginfo_to_external32-from-copy_siginfo_to_user32.patch " Andrew Morton 2020-04-24 2:06 ` + binfmt_elf-femove-the-set_fs-in-fill_siginfo_note.patch " Andrew Morton 2020-04-24 2:06 ` + binfmt_elf-remove-the-set_fskernel_ds-in-elf_core_dump.patch " Andrew Morton 2020-04-24 2:06 ` + binfmt_elf_fdpic-remove-the-set_fskernel_ds-in-elf_fdpic_core_dump.patch " Andrew Morton 2020-04-24 2:06 ` + exec-simplify-the-copy_strings_kernel-calling-convention.patch " Andrew Morton 2020-04-24 2:06 ` + exec-open-code-copy_string_kernel.patch " Andrew Morton 2020-04-24 3:24 ` + add-kernel-config-option-for-twisting-kernel-behavior.patch " Andrew Morton 2020-04-24 3:24 ` + twist-allow-disabling-k_spec-function-in-drivers-tty-vt-keyboardc.patch " Andrew Morton 2020-04-24 3:24 ` + twist-add-option-for-selecting-twist-options-for-syzkallers-testing.patch " Andrew Morton 2020-04-24 3:32 ` + eventpoll-fix-missing-wakeup-for-ovflist-in-ep_poll_callback.patch " Andrew Morton 2020-04-24 3:49 ` [obsolete] linux-next-rejects.patch removed from " Andrew Morton 2020-04-24 3:51 ` + mips-mm-add-page-soft-dirty-tracking.patch added to " Andrew Morton 2020-04-24 23:36 ` + mm-memory_hotplug-set-node_start_pfn-of-hotadded-pgdat-to-0.patch " Andrew Morton 2020-04-26 0:09 ` + mm-switch-the-test_vmalloc-module-to-use-__vmalloc_node-fix-fix.patch " Andrew Morton 2020-04-26 0:17 ` + mm-hugetlb-avoid-unnecessary-check-on-pud-and-pmd-entry-in-huge_pte_offset.patch " Andrew Morton 2020-04-26 0:29 ` + eventpoll-fix-missing-wakeup-for-ovflist-in-ep_poll_callback-v2.patch " Andrew Morton 2020-04-26 0:41 ` [withdrawn] kasan-initialise-array-in-kasan_memcmp-test.patch removed from " Andrew Morton 2020-04-26 0:41 ` + kasan-stop-tests-being-eliminated-as-dead-code-with-fortify_source-v4.patch added to " Andrew Morton 2020-04-26 0:48 ` + checkpatch-test-git_dir-changes.patch " Andrew Morton 2020-04-26 1:06 ` + mm-add-debug_wx-support.patch " Andrew Morton 2020-04-26 1:06 ` + riscv-support-debug_wx.patch " Andrew Morton 2020-04-26 1:06 ` + riscv-support-debug_wx-fix.patch " Andrew Morton 2020-04-26 1:06 ` + x86-mm-use-arch_has_debug_wx-instead-of-arch-defined.patch " Andrew Morton 2020-04-26 1:06 ` + arm64-mm-use-arch_has_debug_wx-instead-of-arch-defined.patch " Andrew Morton 2020-04-26 1:09 ` [folded-merged] initrdmem=-option-to-specify-initrd-physical-address-checkpatch-fixes.patch removed from " Andrew Morton
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=20200423224423.qb8oLW8UR%akpm@linux-foundation.org \ --to=akpm@linux-foundation.org \ --cc=arjunroy@google.com \ --cc=bgeffon@google.com \ --cc=dancol@google.com \ --cc=hannes@cmpxchg.org \ --cc=joaodias@google.com \ --cc=joel@joelfernandes.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mhocko@suse.com \ --cc=minchan@kernel.org \ --cc=mm-commits@vger.kernel.org \ --cc=oleksandr@redhat.com \ --cc=rientjes@google.com \ --cc=shakeelb@google.com \ --cc=sj38.park@gmail.com \ --cc=sonnyrao@google.com \ --cc=sspatil@google.com \ --cc=surenb@google.com \ --cc=timmurray@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
mm-commits Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/mm-commits/0 mm-commits/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 mm-commits mm-commits/ https://lore.kernel.org/mm-commits \ mm-commits@vger.kernel.org public-inbox-index mm-commits Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.mm-commits AGPL code for this site: git clone https://public-inbox.org/public-inbox.git