The patch titled Subject: exec: use force_uaccess_begin during exec and exit has been added to the -mm tree. Its filename is exec-use-force_uaccess_begin-during-exec-and-exit.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/exec-use-force_uaccess_begin-during-exec-and-exit.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/exec-use-force_uaccess_begin-during-exec-and-exit.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: Christoph Hellwig <hch@xxxxxx> Subject: exec: use force_uaccess_begin during exec and exit Both exec and exit want to ensure that the uaccess routines actually do access user pointers. Use the newly added force_uaccess_begin helper instead of an open coded set_fs for that to prepare for kernel builds where set_fs() does not exist. Link: http://lkml.kernel.org/r/20200710135706.537715-7-hch@xxxxxx Signed-off-by: Christoph Hellwig <hch@xxxxxx> Acked-by: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> Cc: Nick Hu <nickhu@xxxxxxxxxxxxx> Cc: Greentime Hu <green.hu@xxxxxxxxx> Cc: Vincent Chen <deanbo422@xxxxxxxxx> Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx> Cc: Palmer Dabbelt <palmer@xxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- fs/exec.c | 7 ++++++- kernel/exit.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) --- a/fs/exec.c~exec-use-force_uaccess_begin-during-exec-and-exit +++ a/fs/exec.c @@ -1380,7 +1380,12 @@ int begin_new_exec(struct linux_binprm * if (retval) goto out_unlock; - set_fs(USER_DS); + /* + * Ensure that the uaccess routines can actually operate on userspace + * pointers: + */ + force_uaccess_begin(); + me->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD | PF_NOFREEZE | PF_NO_SETAFFINITY); flush_thread(); --- a/kernel/exit.c~exec-use-force_uaccess_begin-during-exec-and-exit +++ a/kernel/exit.c @@ -731,7 +731,7 @@ void __noreturn do_exit(long code) * mm_release()->clear_child_tid() from writing to a user-controlled * kernel address. */ - set_fs(USER_DS); + force_uaccess_begin(); if (unlikely(in_atomic())) { pr_info("note: %s[%d] exited with preempt_count %d\n", _ Patches currently in -mm which might be from hch@xxxxxx are syscalls-use-uaccess_kernel-in-addr_limit_user_check.patch nds32-use-uaccess_kernel-in-show_regs.patch riscv-include-asm-pgtableh-in-asm-uaccessh.patch uaccess-remove-segment_eq.patch uaccess-add-force_uaccess_beginend-helpers.patch exec-use-force_uaccess_begin-during-exec-and-exit.patch