s390/syscalls: Fix out of bounds arguments access
A message that is not in the archive (sent off-list or not yet received): 20170703152022.GB16010@krava
Quoted 46 lines · On Mon, 3 Jul 2017 17:20:22 +0200 Jiri Olsa <[email protected]> wrote:
On Mon, Jul 03, 2017 at 04:29:37PM +0200, Martin Schwidefsky wrote:
SNIP
Quoted 26 lines
Quoted 3 lines
--- arch/s390/include/asm/syscall.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)There are callers of
syscall_get_argumentswith n=0. And it makes sense to check for this case in the function instead of forcing all callers to check for it.Quoted 5 lines
arch/s390/include/asm/syscall.h +0
-0arch/s390/include/asm/syscall.h static inline void syscall_get_arguments(struct task_struct *task, · line 73
Quoted 10 lines
arch/s390/include/asm/syscall.h +6
-0@@ -64,14 +64,22 @@ static inline void syscall_get_arguments(struct task_struct *task, {unsigned long mask =-1UL ; +/* +* No arguments for this syscall, there's nothing to do. +*/ +if (!n) +return ; +BUG_ON (i + n >6 );So yes, for this part of the patch.
Quoted 15 lines
arch/s390/include/asm/syscall.h static inline void syscall_get_arguments(struct task_struct *task, · line 85
Quoted 13 lines
arch/s390/include/asm/syscall.h +3
-1#ifdef CONFIG_COMPAT if (test_tsk_thread_flag (task,TIF_31BIT )) mask =0xffffffff ;#endif -while (n-- >0 ) +while (n-- >0 ) {if (i + n >0 ) args[n] = regs->gprs[2 + i + n] & mask; + } +if (i ==0 ) args[0 ] = regs->orig_gpr2 & mask; }But why the unrelated whitespace damage with the additional { } ?
Quoted 3 lines
I always get shouted at when I'm not using { } in conditions/loops having more than 1 line.. so I tend to add them when I see this breakage ;-)
I agree that there should have been { } with the initial patch. It is just that the cleanup is unrelated to the true bug fix
Quoted 1 line
feel free to imot that or let me know and I'll send v2
I will strip that part and add a Cc: stable. Thanks.
Signature · 4 lines
blue skies, Martin. "Reality continues to ruin my life." - Calvin.