Re: [PATCH][v4] uprobes/x86: emulate push insns for uprobe on x86

From: Yonghong Song
Date: Mon Nov 20 2017 - 13:26:45 EST




On 11/20/17 8:41 AM, Oleg Nesterov wrote:
On 11/17, Yonghong Song wrote:

On 11/17/17 9:25 AM, Oleg Nesterov wrote:
On 11/15, Yonghong Song wrote:

v3 -> v4:
. Revert most of v3 change as 32bit emulation is not really working
on x86_64 platform as among other issues, function emulate_push_stack()
needs to account for 32bit app on 64bit platform.
A separate effort is ongoing to address this issue.

Reviewed-by: Oleg Nesterov <oleg@xxxxxxxxxx>



Please test your patch with the fix below, in this particular case the
TIF_IA32 check should be fine. Although this is not what we really want,
we should probably use user_64bit_mode(regs) which checks ->cs. But this
needs more changes and doesn't solve other problems (get_unmapped_area)
so I still can't decide what should we do right now...

I tested the below change with my patch. On x86_64, both 64bit and 32bit
program can be uprobe emulated properly.

Good, so your patch is fine.

Thanks!


On x86_32, however, there is a
compilation error like below:

Yes, yes, when I said "in this particular case" I meant x86_64 system only.

Sorry for confusion, I asked you to test this additional change just to
ensure that we didn't miss something and your patch has no problems with
32bit tasks on 64bit system, except those we need to fix anyway.

Understood. I actually tried a little to see whether I could have a simple way to fix 32bit compilation error without using ugly "#ifdef CONFIG_X86_64". Maybe is_64bit_mm is a good choice. But we could defer this until you have a comprehensive fix for 32bit app uprobe on 64bit systems as there are multiple issues for this.


Oleg.