Re: [RFC PATCH 0/5] madvise MADV_DOEXEC

Matthew Wilcox
2020-07-31T17:23:47Z

On Fri, Jul 31, 2020 at 12:11:52PM -0400, Steven Sistare wrote:
> On 7/31/2020 11:27 AM, Matthew Wilcox wrote:
> > On Fri, Jul 31, 2020 at 10:57:44AM -0400, Steven Sistare wrote:
> >> Matthews sileby/mshare proposal has the same issue. If a process opts-in
> >> and mmap's an address in the shared region, then content becomes mapped at
> >> a VA that was known to the pre-fork or pre-exec process. Trust must still
> >> be established.
> >
> > It's up to the recipient whether they try to map it at the same address
> > or at a fresh address. The intended use case is a "semi-shared" address
> > space between two processes (ie partway between a threaded, fully-shared
> > address space and a forked un-shared address space), in which case
> > there's a certain amount of trust and cooperation between the processes.
>
> Understood, but if the recipient does map at any of the same, which is the whole
> point because you want to share the page table. The trust relationship is no
> different than for the live update case.

You don't have to map at the same address to share the page tables.
For example, on x86 if you share an 8GB region, that must be aligned at
1GB in both the donor and the recipient, but they need not be mapped at
the same address.

> > It's a net increase of 200 lines of kernel code. If 4 lines of userspace
> > code removes 200 lines of kernel code, I think I know which I prefer ...
>
> It will be *far* more than 4 lines.
> Much of the 200 lines is mostly for the elf opt in, and much of the elf code is from
> anthony reviving an earlier patch that use MAP_FIXED_NOREPLACE during segment setup.

It doesn't really matter how much of it is for the opt-in and how much
is for the exec path itself. The MAP_FIXED_NOREPLACE patch is only net
+16 lines, so that's not the problem.