All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Ellerman <mpe@ellerman.id.au>
To: Laurent Dufour <ldufour@linux.ibm.com>,
	Christophe Leroy <christophe.leroy@csgroup.eu>
Cc: linuxppc-dev@lists.ozlabs.org
Subject: Re: VDSO ELF header
Date: Fri, 26 Mar 2021 21:46:36 +1100	[thread overview]
Message-ID: <87blb6gpkj.fsf@mpe.ellerman.id.au> (raw)
In-Reply-To: <30c51951-332b-7aa8-13ba-44a0b6ae3498@linux.ibm.com>

Laurent Dufour <ldufour@linux.ibm.com> writes:
> Le 25/03/2021 à 17:56, Laurent Dufour a écrit :
>> Le 25/03/2021 à 17:46, Christophe Leroy a écrit :
>>> Le 25/03/2021 à 17:11, Laurent Dufour a écrit :
>>>> Since v5.11 and the changes you made to the VDSO code, it no more exposing 
>>>> the ELF header at the beginning of the VDSO mapping in user space.
>>>>
>>>> This is confusing CRIU which is checking for this ELF header cookie 
>>>> (https://github.com/checkpoint-restore/criu/issues/1417).
>>>
>>> How does it do on other architectures ?
>> 
>> Good question, I'll double check the CRIU code.
>
> On x86, there are 2 VDSO entries:
> 7ffff7fcb000-7ffff7fce000 r--p 00000000 00:00 0                          [vvar]
> 7ffff7fce000-7ffff7fcf000 r-xp 00000000 00:00 0                          [vdso]
>
> And the VDSO is starting with the ELF header.
>
>>>> I'm not an expert in loading and ELF part and reading the change you made, I 
>>>> can't identify how this could work now as I'm expecting the loader to need 
>>>> that ELF header to do the relocation.
>>>
>>> I think the loader is able to find it at the expected place.
>> 
>> Actually, it seems the loader relies on the AUX vector AT_SYSINFO_EHDR. I guess 
>> CRIU should do the same.
>> 
>>>>
>>>>  From my investigation it seems that the first bytes of the VDSO area are now 
>>>> the vdso_arch_data.
>>>>
>>>> Is the ELF header put somewhere else?
>>>> How could the loader process the VDSO without that ELF header?
>>>>
>>>
>>> Like most other architectures, we now have the data section as first page and 
>>> the text section follows. So you will likely find the elf header on the second 
>>> page.
>
> I'm wondering if the data section you're refering to is the vvar section I can 
> see on x86.

Many of the other architectures have separate vm_special_mapping's for
the data page and the vdso binary, where the former is called "vvar".

eg, s390:

static struct vm_special_mapping vvar_mapping = {
	.name = "[vvar]",
	.fault = vvar_fault,
};

static struct vm_special_mapping vdso_mapping = {
	.name = "[vdso]",
	.mremap = vdso_mremap,
};


I guess we probably should be doing that too.

cheers

  reply	other threads:[~2021-03-26 10:47 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <c45ae4f8-1cbc-c687-b6a2-9a431fafc85c@linux.ibm.com>
2021-03-25 16:46 ` VDSO ELF header Christophe Leroy
2021-03-25 16:56   ` Laurent Dufour
2021-03-25 19:02     ` Laurent Dufour
2021-03-26 10:46       ` Michael Ellerman [this message]
2021-03-26 10:50         ` Christophe Leroy
2021-03-26 15:13           ` Dmitry Safonov
2021-03-26 16:11             ` Christophe Leroy
2021-03-26 16:32               ` Dmitry Safonov
2021-03-26 17:07                 ` Christophe Leroy
2021-03-26 17:11                   ` Dmitry Safonov
2021-03-26 18:40                     ` Christophe Leroy
2021-03-26 18:54                       ` 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=87blb6gpkj.fsf@mpe.ellerman.id.au \
    --to=mpe@ellerman.id.au \
    --cc=christophe.leroy@csgroup.eu \
    --cc=ldufour@linux.ibm.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    /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.