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