Hi Michael, On Wed, Jun 23, 2021 at 2:21 AM Michael Schmitz <schmitzmic@xxxxxxxxx> wrote: > Add 'status' field to thread_info struct to hold syscall trace > status info. > > Set flag bit in thread_info->status at syscall trace entry, clear > flag bit on trace exit. > > Set another flag bit on entering syscall where the full stack > frame has been saved. These flags can be checked whenever a > syscall calls ptrace_stop(). > > Check flag bits in get_reg()/put_reg() and prevent access to > registers that are saved on the switch stack, in case the > syscall did not actually save these registers on the switch > stack. > > Tested on ARAnyM only - boots and survives running strace on a > binary, nothing fancy. > > CC: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> > CC: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > CC: Andreas Schwab <schwab@xxxxxxxxxxxxxx> > Signed-off-by: Michael Schmitz <schmitzmic@xxxxxxxxx> Thanks for your patch! > --- a/arch/m68k/kernel/entry.S > +++ b/arch/m68k/kernel/entry.S > @@ -51,75 +51,115 @@ > > .text > ENTRY(__sys_fork) > + movel %curptr@(TASK_STACK),%a1 > + orb #TIS_SWITCH_STACK, %a1@(TINFO_STATUS+3) This doesn't work on Coldfire: arch/m68k/kernel/entry.S:55: Error: invalid instruction for this architecture; needs 68000 or higher (68000 [68ec000, 68hc000, 68hc001, 68008, 68302, 68306, 68307, 68322, 68356], 68010, 68020 [68k, 68ec020], 68030 [68ec030], 68040 [68ec040], 68060 [68ec060], cpu32 [68330, 68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349, 68360], fidoa [fido]) -- statement `orb #(1<<1),%a1@(16+3)' ignored > SAVE_SWITCH_STACK > jbsr sys_fork > lea %sp@(24),%sp > + movel %curptr@(TASK_STACK),%a1 > + andb #TIS_NO_SWITCH_STACK, %a1@(TINFO_STATUS+3) arch/m68k/kernel/entry.S:60: Error: invalid instruction for this architecture; needs 68000 or higher (68000 [68ec000, 68hc000, 68hc001, 68008, 68302, 68306, 68307, 68322, 68356], 68010, 68020 [68k, 68ec020], 68030 [68ec030], 68040 [68ec040], 68060 [68ec060], cpu32 [68330, 68331, 68332, 68333, 68334, 68336, 68340, 68341, 68349, 68360], fidoa [fido]) -- statement `andb #(~((1<<1))),%a1@(16+3)' ignored > rts Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds