[PATCH] Invalid return value of execve() resulting in oopses (mainstream)
Invalid return value of execve() resulting in oopses (mainstream)
When elf loader fails to map executable (due to memory shortage
or because binary is malformed), it can return 0. Normally, this is invisible
because process is killed with SIGKILL and it never returns to user space.
But if exec() is called from kernel thread (hotplug, whatever) consequences
are more interesting and vary depending on architecture.
i386. Nothing especially interesting, execve() just returns with "success" :-)
x86_64. Fake zero frame is used on way to caller, RSP/RIP are loaded
with zeros, ergo... double fault.
ia64. Similar to i386, but r32...r95 are corrupted. Sometimes it oopses
due to return to zero PC, sometimes it sees NaT in rXX and oopses
due to NaT consumption.