aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_ksym.c
diff options
context:
space:
mode:
authorXiao Guangrong <xiaoguangrong@cn.fujitsu.com>2009-07-21 23:23:41 -0400
committerSteven Rostedt <rostedt@goodmis.org>2009-07-23 20:52:05 -0400
commit8e068542a8d9efec55126284d2f5cb32f003d507 (patch)
treeb3a75ae9a2dd27596bda9f1c7be1cd5ce0ebacfe /kernel/trace/trace_ksym.c
parentd857ace143df3884954887e1899a65831ca72ece (diff)
tracing/ksym_tracer: fix write operation of ksym_trace_filter
This patch fix 2 bugs: - fix the return value of ksym_trace_filter_write() when we want to clear symbol in ksym_trace_filter file for example: # echo global_trace:rw- > /debug/tracing/ksym_trace_filter # echo global_trace:--- > /debug/tracing/ksym_trace_filter -bash: echo: write error: Invalid argument # cat /debug/tracing/ksym_trace_filter # We want to clear 'global_trace' in ksym_trace_filter, it complain with "Invalid argument", but the operation is successful - the "r--" access types is not allowed, but ksym_trace_filter file think it OK for example: # echo ksym_tracer_mutex:r-- > ksym_trace_filter -bash: echo: write error: Resource temporarily unavailable # dmesg ksym_tracer request failed. Try again later!! The error occur at register_kernel_hw_breakpoint(), but It's should at access types parser Signed-off-by: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com> LKML-Reference: <4A66863D.5090802@cn.fujitsu.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace_ksym.c')
-rw-r--r--kernel/trace/trace_ksym.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/trace/trace_ksym.c b/kernel/trace/trace_ksym.c
index fbf3a8e13bc5..cd5cb656c3d2 100644
--- a/kernel/trace/trace_ksym.c
+++ b/kernel/trace/trace_ksym.c
@@ -135,6 +135,9 @@ static int ksym_trace_get_access_type(char *str)
135 case 6: 135 case 6:
136 access = HW_BREAKPOINT_RW; 136 access = HW_BREAKPOINT_RW;
137 break; 137 break;
138 case 4:
139 access = -EINVAL;
140 break;
138 case 2: 141 case 2:
139 access = HW_BREAKPOINT_WRITE; 142 access = HW_BREAKPOINT_WRITE;
140 break; 143 break;
@@ -312,6 +315,7 @@ static ssize_t ksym_trace_filter_write(struct file *file,
312 kfree(entry->ksym_hbp->info.name); 315 kfree(entry->ksym_hbp->info.name);
313 kfree(entry->ksym_hbp); 316 kfree(entry->ksym_hbp);
314 kfree(entry); 317 kfree(entry);
318 ret = 0;
315 goto out; 319 goto out;
316 } else { 320 } else {
317 /* Check for malformed request: (4) */ 321 /* Check for malformed request: (4) */