Re: [PATCH v3 09/12] binfmt_flat: use clear_user() rather than memset() to clear .bss

From: Greg Ungerer
Date: Wed Jul 20 2016 - 03:14:26 EST


On 20/07/16 14:20, Nicolas Pitre wrote:
> This is needed on systems with a MMU.
>
> Signed-off-by: Nicolas Pitre <nico@xxxxxxxxxx>
> Reviewed-by: Greg Ungerer <gerg@xxxxxxxxxxxxxx>
> ---
> fs/binfmt_flat.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
> index 28fc272d9a..0d89830f76 100644
> --- a/fs/binfmt_flat.c
> +++ b/fs/binfmt_flat.c
> @@ -798,10 +798,11 @@ static int load_flat_file(struct linux_binprm * bprm,
> flush_icache_range(start_code, end_code);
>
> /* zero the BSS, BRK and stack areas */
> - memset((void*)(datapos + data_len), 0, bss_len +
> + if (clear_user((void __user *)(datapos + data_len), bss_len +

nit: this adds a trailing white space ^
(Yes, the memset did have this before as well)

Regards
Greg


> (memp + memp_size - stack_len - /* end brk */
> libinfo->lib_list[id].start_brk) + /* start brk */
> - stack_len);
> + stack_len))
> + return -EFAULT;
>
> return 0;
> err:
>