All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Safonov <dsafonov@virtuozzo.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Thomas Gleixner <tglx@linutronix.de>,
	Shuah Khan <shuahkh@osg.samsung.com>,
	Ingo Molnar <mingo@redhat.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Borislav Petkov <bp@alien8.de>, <khorenko@virtuozzo.com>,
	X86 ML <x86@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>, <xemul@virtuozzo.com>,
	<linux-kselftest@vger.kernel.org>,
	Cyrill Gorcunov <gorcunov@openvz.org>,
	Dmitry Safonov <0x7f454c46@gmail.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH 1/2] x86/arch_prctl: add ARCH_SET_{COMPAT,NATIVE} to change compatible mode
Date: Wed, 13 Apr 2016 19:55:11 +0300	[thread overview]
Message-ID: <570E79EF.7030408@virtuozzo.com> (raw)
In-Reply-To: <CALCETrWKb-OZuRrjxk7f4KD2zXEMs2j5ONj+dXcvyx65-nDcYA@mail.gmail.com>

On 04/08/2016 11:44 PM, Andy Lutomirski wrote:
> Feel free to ask for help on some of these details.  user_64bit_mode
> will be helpful too.
Hello again,

here are some questions on  TIF_IA32 removal:
- in function intel_pmu_pebs_fixup_ip: there is need to
know if process was it native/compat mode for instruction
interpreter for IP + one instruction fixup. There are
registers, but they are from PEBS, which does not contain
segment descriptors (even for PEBSv3). Other values
are from interrupt regs (look at setup_pebs_sample_data).
So, I guess, we may use user_64bit_mode on interrupt
register set, which will be racy with changing task's mode,
but quite ok?
- the same with LBR branching: I may got cs value for
user_64bit_mode or all registers set from intel_pmu_handle_irq
and pass it through intel_pmu_lbr_read => intel_pmu_lbr_filter
to branch_type for instruction decoder, which may
missinterpret opcode for the same racy-mode-switching app.
Is it also fine?
- for coredumping/ptracing, I will change test_thread_flag(TIF_IA32)
by user_64bit_mode(task_pt_regs()) - that looks/should be simple.
It's also valid as at the moment of coredump or of
PTRACE_GETREGSET task isn't running.
- I do not know what to do with uprobes - as you noted,
the way it cheks ia32_compat is buggy even now: task that
switches CS to __USER32_CS or back to __USER_CS will have
lousy inserted uprobe in mm.
So, how do we know on insert-time, with which descriptor
will be program on uprobed code?
- for MPX, I guess, tracking which syscall called
mpx_enable_management will work, at least it may be
documented, that before switching, one need to disable mpx.
- perf_reg_abi everywhere is used with current, so it's
also simple-switching to user_64bit_mode(task_pt_regs(current)).

For the conclusion:
I will send those patches, but I do not know what to do with
uprobes tracing. Could you give an advice what to do with
that?
It seems like, if I do those things, I will only need a way to
change vdso blob, without swapping some compatible flags,
as 64-bit tasks will differ from 32-bit only by the way they
execute syscalls.

  parent reply	other threads:[~2016-04-13 16:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-06 16:29 [PATCH 0/2] x86: add arch_prctl to switch between native/compat modes Dmitry Safonov
2016-04-06 16:29 ` [PATCH 1/2] x86/arch_prctl: add ARCH_SET_{COMPAT,NATIVE} to change compatible mode Dmitry Safonov
2016-04-06 18:04   ` Andy Lutomirski
2016-04-06 18:49     ` Andy Lutomirski
2016-04-07 12:11     ` Dmitry Safonov
2016-04-07 12:21       ` Cyrill Gorcunov
2016-04-07 12:35         ` Dmitry Safonov
2016-04-07 14:39       ` Andy Lutomirski
2016-04-07 15:18         ` Dmitry Safonov
2016-04-08 13:50         ` Dmitry Safonov
2016-04-08 15:56           ` Andy Lutomirski
2016-04-08 16:18             ` Dmitry Safonov
2016-04-08 20:44               ` Andy Lutomirski
2016-04-09  8:06                 ` Dmitry Safonov
2016-04-13 16:55                 ` Dmitry Safonov [this message]
2016-04-14 18:27                   ` Andy Lutomirski
2016-04-20 11:04                     ` Peter Zijlstra
2016-04-20 15:40                       ` Andy Lutomirski
2016-04-20 19:05                         ` Peter Zijlstra
2016-04-21 19:39                           ` Andy Lutomirski
2016-04-21 20:12                             ` Peter Zijlstra
2016-04-21 23:27                               ` Andy Lutomirski
2016-04-21 23:46                                 ` Andy Lutomirski
2016-04-25 15:16                                 ` Peter Zijlstra
2016-04-25 16:50                                   ` Andy Lutomirski
2016-04-06 16:29 ` [PATCH 2/2] x86/tools/testing: add test for ARCH_SET_COMPAT Dmitry Safonov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=570E79EF.7030408@virtuozzo.com \
    --to=dsafonov@virtuozzo.com \
    --cc=0x7f454c46@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=gorcunov@openvz.org \
    --cc=hpa@zytor.com \
    --cc=khorenko@virtuozzo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=mingo@redhat.com \
    --cc=shuahkh@osg.samsung.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xemul@virtuozzo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.