|
@@ -66,12 +66,11 @@ do_compat_cache_op(unsigned long start, unsigned long end, int flags)
|
|
|
/*
|
|
/*
|
|
|
* Handle all unrecognised system calls.
|
|
* Handle all unrecognised system calls.
|
|
|
*/
|
|
*/
|
|
|
-long compat_arm_syscall(struct pt_regs *regs)
|
|
|
|
|
|
|
+long compat_arm_syscall(struct pt_regs *regs, int scno)
|
|
|
{
|
|
{
|
|
|
siginfo_t info;
|
|
siginfo_t info;
|
|
|
- unsigned int no = regs->regs[7];
|
|
|
|
|
|
|
|
|
|
- switch (no) {
|
|
|
|
|
|
|
+ switch (scno) {
|
|
|
/*
|
|
/*
|
|
|
* Flush a region from virtual address 'r0' to virtual address 'r1'
|
|
* Flush a region from virtual address 'r0' to virtual address 'r1'
|
|
|
* _exclusive_. There is no alignment requirement on either address;
|
|
* _exclusive_. There is no alignment requirement on either address;
|
|
@@ -107,7 +106,7 @@ long compat_arm_syscall(struct pt_regs *regs)
|
|
|
* way the calling program can gracefully determine whether
|
|
* way the calling program can gracefully determine whether
|
|
|
* a feature is supported.
|
|
* a feature is supported.
|
|
|
*/
|
|
*/
|
|
|
- if (no < __ARM_NR_COMPAT_END)
|
|
|
|
|
|
|
+ if (scno < __ARM_NR_COMPAT_END)
|
|
|
return -ENOSYS;
|
|
return -ENOSYS;
|
|
|
break;
|
|
break;
|
|
|
}
|
|
}
|
|
@@ -119,6 +118,6 @@ long compat_arm_syscall(struct pt_regs *regs)
|
|
|
info.si_addr = (void __user *)instruction_pointer(regs) -
|
|
info.si_addr = (void __user *)instruction_pointer(regs) -
|
|
|
(compat_thumb_mode(regs) ? 2 : 4);
|
|
(compat_thumb_mode(regs) ? 2 : 4);
|
|
|
|
|
|
|
|
- arm64_notify_die("Oops - bad compat syscall(2)", regs, &info, no);
|
|
|
|
|
|
|
+ arm64_notify_die("Oops - bad compat syscall(2)", regs, &info, scno);
|
|
|
return 0;
|
|
return 0;
|
|
|
}
|
|
}
|