[lvc-project] [PATCH] arm64: ptrace: user_regset_copyin_ignore() always returns 0

Will Deacon will at kernel.org
Thu Sep 22 14:59:02 MSK 2022


On Tue, Sep 20, 2022 at 11:54:55PM +0300, Sergey Shtylyov wrote:
> user_regset_copyin_ignore() always return 0, so checking its result seems
> pointless -- don't do this...
> 
> Found by Linux Verification Center (linuxtesting.org) with the SVACE static
> analysis tool.
> 
> Signed-off-by: Sergey Shtylyov <s.shtylyov at omp.ru>
> 
> ---
> This patch is against the 'for-next/core' branch of the ARM64 repo...
> 
>  arch/arm64/kernel/ptrace.c |   16 ++++------------
>  1 file changed, 4 insertions(+), 12 deletions(-)
> 
> Index: linux/arch/arm64/kernel/ptrace.c
> ===================================================================
> --- linux.orig/arch/arm64/kernel/ptrace.c
> +++ linux/arch/arm64/kernel/ptrace.c
> @@ -514,9 +514,7 @@ static int hw_break_set(struct task_stru
>  
>  	/* Resource info and pad */
>  	offset = offsetof(struct user_hwdebug_state, dbg_regs);
> -	ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf, 0, offset);
> -	if (ret)
> -		return ret;
> +	user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf, 0, offset);
>  
>  	/* (address, ctrl) registers */
>  	limit = regset->n * regset->size;
> @@ -543,11 +541,8 @@ static int hw_break_set(struct task_stru
>  			return ret;
>  		offset += PTRACE_HBP_CTRL_SZ;
>  
> -		ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
> -						offset,
> -						offset + PTRACE_HBP_PAD_SZ);
> -		if (ret)
> -			return ret;
> +		user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
> +					  offset, offset + PTRACE_HBP_PAD_SZ);
>  		offset += PTRACE_HBP_PAD_SZ;
>  		idx++;
>  	}
> @@ -939,10 +934,7 @@ static int sve_set_common(struct task_st
>  
>  	start = end;
>  	end = SVE_PT_SVE_FPSR_OFFSET(vq);
> -	ret = user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf,
> -					start, end);
> -	if (ret)
> -		goto out;
> +	user_regset_copyin_ignore(&pos, &count, &kbuf, &ubuf, start, end);

I think it would be better to have user_regset_copyin_ignore() return void
so that we don't run the risk of missing an error code if it starts
returning one in future.

Will



More information about the lvc-project mailing list