Re: [PATCH] MIPS: uprobes: Restore thread.trap_nr

From: Tiezhu Yang
Date: Sun Apr 23 2023 - 06:40:07 EST


Cc:
Oleg Nesterov <oleg@xxxxxxxxxx>
Srikar Dronamraju <srikar@xxxxxxxxxxxxxxxxxx>

On 04/23/2023 11:08 AM, Bagas Sanjaya wrote:
On Sun, Apr 23, 2023 at 09:38:03AM +0800, Tiezhu Yang wrote:
thread.trap_nr is saved in arch_uprobe_pre_xol(), it should be restored
in arch_uprobe_{post,abort}_xol() accordingly, actually it was only done
in the post function, just do it in the abort function too, this change
is similar with x86 and powerpc.

I'm confused (please fix up grammar, spelling, and punctuation). Can you
explain why thread.trap_nr should be restored somewhere else? Also, what
x86/powerpc changes as reference?


Here is the related first commit for x86 in 2012:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0326f5a94dde

When xol insn itself triggers the signal, restart the original insn,
in this case, UTASK_SSTEP_TRAPPED is set [1], it does *abort_xol()
instead of *post_xol() [2], then should do the restore operations.

Maybe Oleg and Srikar could give more detailed backgrounds, thank you.
https://lore.kernel.org/lkml/1682213883-3654-1-git-send-email-yangtiezhu@xxxxxxxxxxx/

[1] https://elixir.bootlin.com/linux/latest/source/kernel/events/uprobes.c#L1980
[2] https://elixir.bootlin.com/linux/latest/source/kernel/events/uprobes.c#L2268

Thanks,
Tiezhu