[PATCH v6 3/7] um: use execveat to create userspace MMs

Johannes Berg johannes at sipsolutions.net
Mon Jul 1 13:20:41 PDT 2024


On Wed, 2024-06-26 at 15:53 +0200, Benjamin Berg wrote:
> 
> +static int __init init_stub_exec_fd(void)
> +{
> +	size_t len = 0;
> +	int res;
> +	char tmpfile[] = "/tmp/uml-userspace-XXXXXX";


That seems awkward, perhaps it should use make_tempfile() from mem.c?

> +		stub_exec_fd = mkostemp(tmpfile, O_CLOEXEC);

mkostemp() also requires _GNU_SOURCE according to the man page? It also
doesn't matter since you reopen the file anyway.

> +		/* Only executable by us */
> +		if (fchmod(stub_exec_fd, 00100) < 0) {
> +			unlink(tmpfile);
> +			panic("Could not make stub binary excutable: %d",
> +			      errno);
> +		}
> +
> +		close(stub_exec_fd);
> +		stub_exec_fd = open(tmpfile, O_CLOEXEC);

Hmm. Technically, I think you _have_ to open for reading, writing, or
both; not none? But then I guess you have to make it readable?

Might also want O_NOFOLLOW here?

> diff --git a/arch/x86/um/stub_elf.c b/arch/x86/um/stub_elf.c
> new file mode 100644
> index 000000000000..2bf1a717065d
> --- /dev/null
> +++ b/arch/x86/um/stub_elf.c

Is stub_elf really the right name? In practice it's going to be an ELF
file, but ... who cares? Not sure why it should be called "elf" vs. just
"stub" or "exec_stub" or something like that.

Also, is it really x86-specific?

> +++ b/arch/x86/um/stub_elf_embed.S

surely that isn't x86-specific?

johannes



More information about the linux-um mailing list