Re: [PATCH net-next] modules: allow modprobe load regular elf binaries

From: Alexei Starovoitov
Date: Fri Mar 09 2018 - 20:44:07 EST


On 3/9/18 11:37 AM, Andy Lutomirski wrote:
On Fri, Mar 9, 2018 at 6:55 PM, David Miller <davem@xxxxxxxxxxxxx> wrote:
From: Alexei Starovoitov <ast@xxxxxx>
Date: Fri, 9 Mar 2018 10:50:49 -0800

On 3/9/18 10:23 AM, Andy Lutomirski wrote:
It might not be totally crazy to back it by tmpfs.

interesting. how do you propose to do it?
Something like:
- create /umh_module_tempxxx dir
- mount tmpfs there
- copy elf into it and exec it?

I think the idea is that it's an internal tmpfs mount that only
the kernel has access too.

That's what I was imagining. There's precedent. For example, there's
a very short piece of code that does it in
drivers/gpu/drm/i915/i915_gemfs.c.

I can do "monkey see monkey do" approach which will look like:
type = get_fs_type("tmpfs");
fs = kern_mount(type);

/* for each request_umh("foo") */
file = shmem_file_setup_with_mnt(fs, "umh_foo");
do {
pagecache_write_begin(file,...);
memcpy()
pagecache_write_end();
} while (umh_elf_size);
do_execve_file(file);
fput(file);

while keeping fs mounted forever?
is there better way?