mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-10 03:20:49 +00:00
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. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Nick Hu <nickhu@andestech.com> Cc: Greentime Hu <green.hu@gmail.com> Cc: Vincent Chen <deanbo422@gmail.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Link: http://lkml.kernel.org/r/20200710135706.537715-7-hch@lst.de Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
3d13f313ce
commit
fe81417596
@ -1402,7 +1402,12 @@ int begin_new_exec(struct linux_binprm * bprm)
|
|||||||
if (retval)
|
if (retval)
|
||||||
goto out_unlock;
|
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 |
|
me->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD |
|
||||||
PF_NOFREEZE | PF_NO_SETAFFINITY);
|
PF_NOFREEZE | PF_NO_SETAFFINITY);
|
||||||
flush_thread();
|
flush_thread();
|
||||||
|
@ -732,7 +732,7 @@ void __noreturn do_exit(long code)
|
|||||||
* mm_release()->clear_child_tid() from writing to a user-controlled
|
* mm_release()->clear_child_tid() from writing to a user-controlled
|
||||||
* kernel address.
|
* kernel address.
|
||||||
*/
|
*/
|
||||||
set_fs(USER_DS);
|
force_uaccess_begin();
|
||||||
|
|
||||||
if (unlikely(in_atomic())) {
|
if (unlikely(in_atomic())) {
|
||||||
pr_info("note: %s[%d] exited with preempt_count %d\n",
|
pr_info("note: %s[%d] exited with preempt_count %d\n",
|
||||||
|
Loading…
Reference in New Issue
Block a user