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

Sergey Shtylyov s.shtylyov at omp.ru
Tue Sep 27 11:46:11 PDT 2022


Hello!

On 9/26/22 5:01 PM, Catalin Marinas 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.
>>
>>    That's the plan! But I need to convert the users 1st, right?
> 
> Right, though normally we'd like to see the full series that does the
> arch clean-up followed by the user_regset_copyin_ignore() return changed
> to void. If for some reason the last patch is rejected by the maintainer
> because there are plans to actually return some non-zero value, we'd
> have to revert the above.

   Hm... I usually try to avoid a cross-tree patch series but here I should
be able to use the linux-next repo as I series' base. Is that OK?

MBR, Sergey



More information about the linux-arm-kernel mailing list