Indeed, we can't use "argv" put on stack memory if we use "no wait" mode.
We need to ensure that memory region pointed by "argv" is valid until
do_execve() finishes. However,
|
| exit:
| kfree(devpath);
| kfree(env);
| return retval;
| }
"env" can be overwritten as well as "argv".
We need to ensure that memory region pointed by "env" is valid until
do_execve() finishes, don't we?
I think we need to use UMH_WAIT_EXEC instead of UMH_NO_WAIT.
Regards.
--