|
@@ -313,7 +313,7 @@ static void ftrace_syscall_enter(void *data, struct pt_regs *regs, long id)
|
|
|
int size;
|
|
|
|
|
|
syscall_nr = trace_get_syscall_nr(current, regs);
|
|
|
- if (syscall_nr < 0)
|
|
|
+ if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
|
|
|
return;
|
|
|
|
|
|
/* Here we're inside tp handler's rcu_read_lock_sched (__DO_TRACE) */
|
|
@@ -360,7 +360,7 @@ static void ftrace_syscall_exit(void *data, struct pt_regs *regs, long ret)
|
|
|
int syscall_nr;
|
|
|
|
|
|
syscall_nr = trace_get_syscall_nr(current, regs);
|
|
|
- if (syscall_nr < 0)
|
|
|
+ if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
|
|
|
return;
|
|
|
|
|
|
/* Here we're inside tp handler's rcu_read_lock_sched (__DO_TRACE()) */
|
|
@@ -567,7 +567,7 @@ static void perf_syscall_enter(void *ignore, struct pt_regs *regs, long id)
|
|
|
int size;
|
|
|
|
|
|
syscall_nr = trace_get_syscall_nr(current, regs);
|
|
|
- if (syscall_nr < 0)
|
|
|
+ if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
|
|
|
return;
|
|
|
if (!test_bit(syscall_nr, enabled_perf_enter_syscalls))
|
|
|
return;
|
|
@@ -641,7 +641,7 @@ static void perf_syscall_exit(void *ignore, struct pt_regs *regs, long ret)
|
|
|
int size;
|
|
|
|
|
|
syscall_nr = trace_get_syscall_nr(current, regs);
|
|
|
- if (syscall_nr < 0)
|
|
|
+ if (syscall_nr < 0 || syscall_nr >= NR_syscalls)
|
|
|
return;
|
|
|
if (!test_bit(syscall_nr, enabled_perf_exit_syscalls))
|
|
|
return;
|