linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andy Lutomirski <luto@amacapital.net>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Dmitry Safonov <dsafonov@virtuozzo.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Dmitry Safonov <0x7f454c46@gmail.com>,
	khorenko@virtuozzo.com,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Cyrill Gorcunov <gorcunov@openvz.org>,
	xemul@virtuozzo.com, X86 ML <x86@kernel.org>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: [PATCH 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32)
Date: Fri, 10 Jun 2016 13:14:24 -0700	[thread overview]
Message-ID: <CALCETrWM1xr_5jkxofdW+iEoTmZpaOFDOBroaaB=UMM1pYct3A@mail.gmail.com> (raw)
In-Reply-To: <20160610200739.GA14789@redhat.com>

On Fri, Jun 10, 2016 at 1:07 PM, Oleg Nesterov <oleg@redhat.com> wrote:
> On 06/09, Andy Lutomirski wrote:
>>
>> On Jun 6, 2016 3:21 PM, "Oleg Nesterov" <oleg@redhat.com> wrote:
>> >
>> > On 06/01, Dmitry Safonov wrote:
>> > >
>> > > Note, that this will work only if application has changed it's CS.
>> >
>> > So, suppose it changes it's CS and crashes,
>> >
>> > > If the application does 32-bit syscall with __USER_CS, ptrace
>> > > @@ -1355,7 +1355,7 @@ void update_regset_xstate_info(unsigned int size, u64 xstate_mask)
>> > >  const struct user_regset_view *task_user_regset_view(struct task_struct *task)
>> > >  {
>> > >  #ifdef CONFIG_IA32_EMULATION
>> > > -     if (test_tsk_thread_flag(task, TIF_IA32))
>> > > +     if (!user_64bit_mode(task_pt_regs(task)))
>> > >  #endif
>> >
>> > then coredump will do fill_elf_header(view->e_machine) and use EM_X86_64
>> > instead of EM_386, or vice versa...
>> >
>> > I simply can't understand is this better or worse, I guess gdb or any
>> > other tool which looks at this coredump will be confused anyway.
>> >
>>
>> I think it's better.
>
> and I tend to agree, I didn't try to argue with this change, but
>
>> CRIU will change CS and someone will make the
>> restored process crash afterwards.
>
> I don't understand what do you mean... could you explain?
>
> IIRC, CRIU can't c/r the 32-bit applications, or this is no longer true?
>

CRIU has a horrible, nasty, brilliant idea: it will start restoring
32-bit processes by treating them mostly like 64-bit processes.  The
restorer will start out 64-bit, set everything up, and long
jump/return/sigreturn/whatever back to 32-bit mode.  My proposal was
that, rather than coming up with nasty hacks to switch the kernel's
idea of the task bitness, we instead teach the kernel to respect that
actual bitness as indicated by CS and the syscalls used to the extent
possible.

So, yes, a restored 32-bit process that crashes should dump core as
though it's 32-bit even though it was 64-bit when execve was last
called :)

--Andy

  reply	other threads:[~2016-06-10 20:14 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-01 13:11 [PATCH 0/6] x86: 32-bit compatible C/R on x86_64 Dmitry Safonov
2016-06-01 13:11 ` [PATCH 1/6] x86/vdso: unmap vdso blob on vvar mapping failure Dmitry Safonov
2016-06-01 13:11 ` [PATCH 2/6] x86/vdso: introduce do_map_vdso() and vdso_type enum Dmitry Safonov
2016-06-03  9:50   ` Cyrill Gorcunov
2016-06-03 10:03     ` Dmitry Safonov
2016-06-01 13:11 ` [PATCH 3/6] x86/arch_prctl/vdso: add ARCH_MAP_VDSO_* Dmitry Safonov
2016-06-01 13:11 ` [PATCH 4/6] x86/coredump: use core regs, rather that TIF_IA32 flag Dmitry Safonov
2016-06-03  9:51   ` Cyrill Gorcunov
2016-06-03  9:56     ` Dmitry Safonov
2016-06-03 10:01       ` Cyrill Gorcunov
2016-06-06 20:45   ` Oleg Nesterov
2016-06-06 22:43     ` Oleg Nesterov
2016-06-08 13:28       ` Dmitry Safonov
2016-06-01 13:11 ` [PATCH 5/6] x86/ptrace: down with test_thread_flag(TIF_IA32) Dmitry Safonov
2016-06-03  9:57   ` Cyrill Gorcunov
2016-06-03 10:27     ` Dmitry Safonov
2016-06-03 10:41       ` Cyrill Gorcunov
2016-06-06 21:19   ` Oleg Nesterov
2016-06-07 11:38     ` Dmitry Safonov
2016-06-09 17:21     ` Andy Lutomirski
2016-06-10 20:07       ` Oleg Nesterov
2016-06-10 20:14         ` Andy Lutomirski [this message]
2016-06-13 13:50           ` Oleg Nesterov
2016-06-13 20:40             ` Andy Lutomirski
2016-06-14 14:34               ` Oleg Nesterov
2016-06-14 14:43                 ` Dmitry Safonov
2016-06-01 13:11 ` [PATCH 6/6] x86/signal: add SA_{X32,IA32}_ABI sa_flags Dmitry Safonov
2016-06-04  5:08   ` Andy Lutomirski
2016-06-04 15:57     ` Dmitry Safonov
2016-06-01 13:15 ` [PATCH 0/6] x86: 32-bit compatible C/R on x86_64 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='CALCETrWM1xr_5jkxofdW+iEoTmZpaOFDOBroaaB=UMM1pYct3A@mail.gmail.com' \
    --to=luto@amacapital.net \
    --cc=0x7f454c46@gmail.com \
    --cc=dsafonov@virtuozzo.com \
    --cc=gorcunov@openvz.org \
    --cc=hpa@zytor.com \
    --cc=khorenko@virtuozzo.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=oleg@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).