Messages in this thread Patch in this message | | | Date | Wed, 1 Jul 2015 23:04:03 +0300 | From | Alexey Dobriyan <> | Subject | [PATCH] proc: fixup empty ARGV case for /proc/$PID/cmdline |
| |
/proc/*/cmdline code checks if it should look at ENVP area by checking last byte of ARGV area:
rv = access_remote_vm(mm, arg_end - 1, &c, 1, 0); if (rv <= 0) goto out_free_page;
If ARGV is somehow made empty (by doing execve(..., NULL, ...) or manually setting ->arg_start and ->arg_end to equal values), the decision will be based on byte which doesn't even belong to ARGV/ENVP.
So, quickly check if ARGV area is empty and report 0 to match previous behaviour.
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> ---
fs/proc/base.c | 5 +++++ 1 file changed, 5 insertions(+)
--- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -243,6 +243,11 @@ static ssize_t proc_pid_cmdline_read(struct file *file, char __user *buf, len1 = arg_end - arg_start; len2 = env_end - env_start; + /* Empty ARGV. */ + if (len1 == 0) { + rv = 0; + goto out_free_page; + } /* * Inherently racy -- command line shares address space * with code and data.
| |