diff options
Diffstat (limited to 'kernel/trace/trace_syscalls.c')
| -rw-r--r-- | kernel/trace/trace_syscalls.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/kernel/trace/trace_syscalls.c b/kernel/trace/trace_syscalls.c index 85291c4de406..4f5fae6fad90 100644 --- a/kernel/trace/trace_syscalls.c +++ b/kernel/trace/trace_syscalls.c | |||
| @@ -11,8 +11,8 @@ | |||
| 11 | static DEFINE_MUTEX(syscall_trace_lock); | 11 | static DEFINE_MUTEX(syscall_trace_lock); |
| 12 | static int sys_refcount_enter; | 12 | static int sys_refcount_enter; |
| 13 | static int sys_refcount_exit; | 13 | static int sys_refcount_exit; |
| 14 | static DECLARE_BITMAP(enabled_enter_syscalls, FTRACE_SYSCALL_MAX); | 14 | static DECLARE_BITMAP(enabled_enter_syscalls, NR_syscalls); |
| 15 | static DECLARE_BITMAP(enabled_exit_syscalls, FTRACE_SYSCALL_MAX); | 15 | static DECLARE_BITMAP(enabled_exit_syscalls, NR_syscalls); |
| 16 | 16 | ||
| 17 | enum print_line_t | 17 | enum print_line_t |
| 18 | print_syscall_enter(struct trace_iterator *iter, int flags) | 18 | print_syscall_enter(struct trace_iterator *iter, int flags) |
| @@ -227,6 +227,8 @@ void ftrace_syscall_enter(struct pt_regs *regs, long id) | |||
| 227 | int syscall_nr; | 227 | int syscall_nr; |
| 228 | 228 | ||
| 229 | syscall_nr = syscall_get_nr(current, regs); | 229 | syscall_nr = syscall_get_nr(current, regs); |
| 230 | if (syscall_nr < 0) | ||
| 231 | return; | ||
| 230 | if (!test_bit(syscall_nr, enabled_enter_syscalls)) | 232 | if (!test_bit(syscall_nr, enabled_enter_syscalls)) |
| 231 | return; | 233 | return; |
| 232 | 234 | ||
| @@ -257,6 +259,8 @@ void ftrace_syscall_exit(struct pt_regs *regs, long ret) | |||
| 257 | int syscall_nr; | 259 | int syscall_nr; |
| 258 | 260 | ||
| 259 | syscall_nr = syscall_get_nr(current, regs); | 261 | syscall_nr = syscall_get_nr(current, regs); |
| 262 | if (syscall_nr < 0) | ||
| 263 | return; | ||
| 260 | if (!test_bit(syscall_nr, enabled_exit_syscalls)) | 264 | if (!test_bit(syscall_nr, enabled_exit_syscalls)) |
| 261 | return; | 265 | return; |
| 262 | 266 | ||
| @@ -285,7 +289,7 @@ int reg_event_syscall_enter(void *ptr) | |||
| 285 | 289 | ||
| 286 | name = (char *)ptr; | 290 | name = (char *)ptr; |
| 287 | num = syscall_name_to_nr(name); | 291 | num = syscall_name_to_nr(name); |
| 288 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 292 | if (num < 0 || num >= NR_syscalls) |
| 289 | return -ENOSYS; | 293 | return -ENOSYS; |
| 290 | mutex_lock(&syscall_trace_lock); | 294 | mutex_lock(&syscall_trace_lock); |
| 291 | if (!sys_refcount_enter) | 295 | if (!sys_refcount_enter) |
| @@ -308,7 +312,7 @@ void unreg_event_syscall_enter(void *ptr) | |||
| 308 | 312 | ||
| 309 | name = (char *)ptr; | 313 | name = (char *)ptr; |
| 310 | num = syscall_name_to_nr(name); | 314 | num = syscall_name_to_nr(name); |
| 311 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 315 | if (num < 0 || num >= NR_syscalls) |
| 312 | return; | 316 | return; |
| 313 | mutex_lock(&syscall_trace_lock); | 317 | mutex_lock(&syscall_trace_lock); |
| 314 | sys_refcount_enter--; | 318 | sys_refcount_enter--; |
| @@ -326,7 +330,7 @@ int reg_event_syscall_exit(void *ptr) | |||
| 326 | 330 | ||
| 327 | name = (char *)ptr; | 331 | name = (char *)ptr; |
| 328 | num = syscall_name_to_nr(name); | 332 | num = syscall_name_to_nr(name); |
| 329 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 333 | if (num < 0 || num >= NR_syscalls) |
| 330 | return -ENOSYS; | 334 | return -ENOSYS; |
| 331 | mutex_lock(&syscall_trace_lock); | 335 | mutex_lock(&syscall_trace_lock); |
| 332 | if (!sys_refcount_exit) | 336 | if (!sys_refcount_exit) |
| @@ -349,7 +353,7 @@ void unreg_event_syscall_exit(void *ptr) | |||
| 349 | 353 | ||
| 350 | name = (char *)ptr; | 354 | name = (char *)ptr; |
| 351 | num = syscall_name_to_nr(name); | 355 | num = syscall_name_to_nr(name); |
| 352 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 356 | if (num < 0 || num >= NR_syscalls) |
| 353 | return; | 357 | return; |
| 354 | mutex_lock(&syscall_trace_lock); | 358 | mutex_lock(&syscall_trace_lock); |
| 355 | sys_refcount_exit--; | 359 | sys_refcount_exit--; |
| @@ -369,8 +373,8 @@ struct trace_event event_syscall_exit = { | |||
| 369 | 373 | ||
| 370 | #ifdef CONFIG_EVENT_PROFILE | 374 | #ifdef CONFIG_EVENT_PROFILE |
| 371 | 375 | ||
| 372 | static DECLARE_BITMAP(enabled_prof_enter_syscalls, FTRACE_SYSCALL_MAX); | 376 | static DECLARE_BITMAP(enabled_prof_enter_syscalls, NR_syscalls); |
| 373 | static DECLARE_BITMAP(enabled_prof_exit_syscalls, FTRACE_SYSCALL_MAX); | 377 | static DECLARE_BITMAP(enabled_prof_exit_syscalls, NR_syscalls); |
| 374 | static int sys_prof_refcount_enter; | 378 | static int sys_prof_refcount_enter; |
| 375 | static int sys_prof_refcount_exit; | 379 | static int sys_prof_refcount_exit; |
| 376 | 380 | ||
| @@ -416,7 +420,7 @@ int reg_prof_syscall_enter(char *name) | |||
| 416 | int num; | 420 | int num; |
| 417 | 421 | ||
| 418 | num = syscall_name_to_nr(name); | 422 | num = syscall_name_to_nr(name); |
| 419 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 423 | if (num < 0 || num >= NR_syscalls) |
| 420 | return -ENOSYS; | 424 | return -ENOSYS; |
| 421 | 425 | ||
| 422 | mutex_lock(&syscall_trace_lock); | 426 | mutex_lock(&syscall_trace_lock); |
| @@ -438,7 +442,7 @@ void unreg_prof_syscall_enter(char *name) | |||
| 438 | int num; | 442 | int num; |
| 439 | 443 | ||
| 440 | num = syscall_name_to_nr(name); | 444 | num = syscall_name_to_nr(name); |
| 441 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 445 | if (num < 0 || num >= NR_syscalls) |
| 442 | return; | 446 | return; |
| 443 | 447 | ||
| 444 | mutex_lock(&syscall_trace_lock); | 448 | mutex_lock(&syscall_trace_lock); |
| @@ -477,7 +481,7 @@ int reg_prof_syscall_exit(char *name) | |||
| 477 | int num; | 481 | int num; |
| 478 | 482 | ||
| 479 | num = syscall_name_to_nr(name); | 483 | num = syscall_name_to_nr(name); |
| 480 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 484 | if (num < 0 || num >= NR_syscalls) |
| 481 | return -ENOSYS; | 485 | return -ENOSYS; |
| 482 | 486 | ||
| 483 | mutex_lock(&syscall_trace_lock); | 487 | mutex_lock(&syscall_trace_lock); |
| @@ -499,7 +503,7 @@ void unreg_prof_syscall_exit(char *name) | |||
| 499 | int num; | 503 | int num; |
| 500 | 504 | ||
| 501 | num = syscall_name_to_nr(name); | 505 | num = syscall_name_to_nr(name); |
| 502 | if (num < 0 || num >= FTRACE_SYSCALL_MAX) | 506 | if (num < 0 || num >= NR_syscalls) |
| 503 | return; | 507 | return; |
| 504 | 508 | ||
| 505 | mutex_lock(&syscall_trace_lock); | 509 | mutex_lock(&syscall_trace_lock); |
