@@ -441,10 +441,12 @@ void unreg_event_syscall_exit(struct ftrace_event_call *call)
int init_syscall_trace(struct ftrace_event_call *call)
{
int id;
- int num;
+ int num, compat_num;
num = ((struct syscall_metadata *)call->data)->syscall_nr;
- if (num < 0 || num >= NR_syscalls) {
+ compat_num = ((struct syscall_metadata *)call->data)->compat_syscall_nr;
+ if (( num < 0 || num >= NR_syscalls) &&
+ (compat_num < 0 || compat_num >= NR_syscalls)) {
pr_debug("syscall %s metadata not mapped, disabling ftrace event\n",
((struct syscall_metadata *)call->data)->name);
return -ENOSYS;