diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2026-10-20 08:51:54 -1000 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2026-10-20 08:51:54 -1000 |
| commit | 939e5a481a881e989714754ca65ac35f195e8e34 (patch) | |
| tree | e8728c48a25fc0856e180d83be14cd4d689efde9 /scripts/Makefile.thinlto | |
| parent | 1d82db25c9b6c9ada9629edd95e2ae8eeebc1cc2 (diff) | |
| download | linux-939e5a481a881e989714754ca65ac35f195e8e34.tar.gz linux-939e5a481a881e989714754ca65ac35f195e8e34.zip | |
nios2: use scoped user access for the signal frame
rt_setup_ucontext() and rt_restore_ucontext() move the saved registers
with __put_user() and __get_user(), OR-ing the errors together, relying
on the access_ok() done on the whole frame by setup_rt_frame() and
do_rt_sigreturn(). setup_rt_frame() writes the ucontext flags and link
the same way.
Do those accesses inside scoped_user_{write,read}_access() instead, with
unsafe_{put,get}_user(). The gregs pointer is now derived inside each
scope, from the pointer the scope checked. restore_altstack() is called
after the scope. The access_ok() calls stay: do_rt_sigreturn() still
needs its own for the __copy_from_user() of the signal mask.
A fault part way through now stops at the first failing access instead
of carrying on. Either way the task gets SIGSEGV. nios2 has no
user_access_begin(), so the accesses themselves are the same as before.
This is part of getting rid of __get_user() and __put_user() entirely.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
