Messages in this thread | | | Subject | Re: [PATCH 2/3] arm64: syscall.h: Add sign extension handling in syscall_get_return_value for compat | From | He Zhe <> | Date | Tue, 20 Apr 2021 16:38:35 +0800 |
| |
On 4/16/21 5:43 PM, Oleg Nesterov wrote: > On 04/16, He Zhe wrote: >> --- a/arch/arm64/include/asm/syscall.h >> +++ b/arch/arm64/include/asm/syscall.h >> @@ -44,7 +44,12 @@ static inline long syscall_get_error(struct task_struct *task, >> static inline long syscall_get_return_value(struct task_struct *task, >> struct pt_regs *regs) >> { >> - return regs->regs[0]; >> + long val = regs->regs[0]; >> + >> + if (is_compat_thread(task_thread_info(task))) >> + val = sign_extend64(val, 31); >> + >> + return val; >> } > I can't really review these arm-specific patches, but with this change both > syscall_get_error() and is_syscall_success() can use syscall_get_return_value() > to avoid the code duplication.
Thanks. I'll improve this if v2 is needed.
Regards, Zhe
> > Oleg. >
| |