diff options
author | Jiri Olsa <jolsa@redhat.com> | 2012-04-25 04:23:39 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2012-05-08 21:04:12 -0400 |
commit | 50e18b94c695644d824381e7574b9c44acc25ffe (patch) | |
tree | 8e323cd188dfdf4882e963812a6b9caf8905cac0 /kernel/trace/trace.c | |
parent | b02ee9a33b65bcc4ad13c12a0b04afdaab3ddd8d (diff) |
tracing: Use seq_*_private interface for some seq files
It's appropriate to use __seq_open_private interface to open
some of trace seq files, because it covers all steps we are
duplicating in tracing code - zallocating the iterator and
setting it as seq_file's private.
Using this for following files:
trace
available_filter_functions
enabled_functions
Link: http://lkml.kernel.org/r/1335342219-2782-5-git-send-email-jolsa@redhat.com
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
[
Fixed warnings for:
kernel/trace/trace.c: In function '__tracing_open':
kernel/trace/trace.c:2418:11: warning: unused variable 'ret' [-Wunused-variable]
kernel/trace/trace.c:2417:19: warning: unused variable 'm' [-Wunused-variable]
]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r-- | kernel/trace/trace.c | 30 |
1 files changed, 5 insertions, 25 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index f11a285ee5bb..4fb10ef727d3 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c | |||
@@ -2413,15 +2413,13 @@ static struct trace_iterator * | |||
2413 | __tracing_open(struct inode *inode, struct file *file) | 2413 | __tracing_open(struct inode *inode, struct file *file) |
2414 | { | 2414 | { |
2415 | long cpu_file = (long) inode->i_private; | 2415 | long cpu_file = (long) inode->i_private; |
2416 | void *fail_ret = ERR_PTR(-ENOMEM); | ||
2417 | struct trace_iterator *iter; | 2416 | struct trace_iterator *iter; |
2418 | struct seq_file *m; | 2417 | int cpu; |
2419 | int cpu, ret; | ||
2420 | 2418 | ||
2421 | if (tracing_disabled) | 2419 | if (tracing_disabled) |
2422 | return ERR_PTR(-ENODEV); | 2420 | return ERR_PTR(-ENODEV); |
2423 | 2421 | ||
2424 | iter = kzalloc(sizeof(*iter), GFP_KERNEL); | 2422 | iter = __seq_open_private(file, &tracer_seq_ops, sizeof(*iter)); |
2425 | if (!iter) | 2423 | if (!iter) |
2426 | return ERR_PTR(-ENOMEM); | 2424 | return ERR_PTR(-ENOMEM); |
2427 | 2425 | ||
@@ -2478,32 +2476,15 @@ __tracing_open(struct inode *inode, struct file *file) | |||
2478 | tracing_iter_reset(iter, cpu); | 2476 | tracing_iter_reset(iter, cpu); |
2479 | } | 2477 | } |
2480 | 2478 | ||
2481 | ret = seq_open(file, &tracer_seq_ops); | ||
2482 | if (ret < 0) { | ||
2483 | fail_ret = ERR_PTR(ret); | ||
2484 | goto fail_buffer; | ||
2485 | } | ||
2486 | |||
2487 | m = file->private_data; | ||
2488 | m->private = iter; | ||
2489 | |||
2490 | mutex_unlock(&trace_types_lock); | 2479 | mutex_unlock(&trace_types_lock); |
2491 | 2480 | ||
2492 | return iter; | 2481 | return iter; |
2493 | 2482 | ||
2494 | fail_buffer: | ||
2495 | for_each_tracing_cpu(cpu) { | ||
2496 | if (iter->buffer_iter[cpu]) | ||
2497 | ring_buffer_read_finish(iter->buffer_iter[cpu]); | ||
2498 | } | ||
2499 | free_cpumask_var(iter->started); | ||
2500 | tracing_start(); | ||
2501 | fail: | 2483 | fail: |
2502 | mutex_unlock(&trace_types_lock); | 2484 | mutex_unlock(&trace_types_lock); |
2503 | kfree(iter->trace); | 2485 | kfree(iter->trace); |
2504 | kfree(iter); | 2486 | seq_release_private(inode, file); |
2505 | 2487 | return ERR_PTR(-ENOMEM); | |
2506 | return fail_ret; | ||
2507 | } | 2488 | } |
2508 | 2489 | ||
2509 | int tracing_open_generic(struct inode *inode, struct file *filp) | 2490 | int tracing_open_generic(struct inode *inode, struct file *filp) |
@@ -2539,11 +2520,10 @@ static int tracing_release(struct inode *inode, struct file *file) | |||
2539 | tracing_start(); | 2520 | tracing_start(); |
2540 | mutex_unlock(&trace_types_lock); | 2521 | mutex_unlock(&trace_types_lock); |
2541 | 2522 | ||
2542 | seq_release(inode, file); | ||
2543 | mutex_destroy(&iter->mutex); | 2523 | mutex_destroy(&iter->mutex); |
2544 | free_cpumask_var(iter->started); | 2524 | free_cpumask_var(iter->started); |
2545 | kfree(iter->trace); | 2525 | kfree(iter->trace); |
2546 | kfree(iter); | 2526 | seq_release_private(inode, file); |
2547 | return 0; | 2527 | return 0; |
2548 | } | 2528 | } |
2549 | 2529 | ||