aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
authorPeter Huewe <peterhuewe@gmx.de>2011-06-07 15:58:27 -0400
committerSteven Rostedt <rostedt@goodmis.org>2011-06-14 22:48:50 -0400
commit22fe9b54d859e53bfbbbdc1a0a77a82bc453927c (patch)
tree4aec2d069decbe0786ad5474908f5bbe49732ad4 /kernel/trace
parent749230b06a753a22f6ed96e5dd60815d6ab12865 (diff)
tracing: Convert to kstrtoul_from_user
This patch replaces the code for getting an unsigned long from a userspace buffer by a simple call to kstroul_from_user. This makes it easier to read and less error prone. Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Link: http://lkml.kernel.org/r/1307476707-14762-1-git-send-email-peterhuewe@gmx.de Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/ftrace.c13
-rw-r--r--kernel/trace/ring_buffer.c13
-rw-r--r--kernel/trace/trace.c65
-rw-r--r--kernel/trace/trace_events.c26
-rw-r--r--kernel/trace/trace_stack.c13
5 files changed, 20 insertions, 110 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index e1538071660d..458018a1ac9a 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -803,19 +803,10 @@ ftrace_profile_write(struct file *filp, const char __user *ubuf,
803 size_t cnt, loff_t *ppos) 803 size_t cnt, loff_t *ppos)
804{ 804{
805 unsigned long val; 805 unsigned long val;
806 char buf[64]; /* big enough to hold a number */
807 int ret; 806 int ret;
808 807
809 if (cnt >= sizeof(buf)) 808 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
810 return -EINVAL; 809 if (ret)
811
812 if (copy_from_user(&buf, ubuf, cnt))
813 return -EFAULT;
814
815 buf[cnt] = 0;
816
817 ret = strict_strtoul(buf, 10, &val);
818 if (ret < 0)
819 return ret; 810 return ret;
820 811
821 val = !!val; 812 val = !!val;
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 725153d6cf73..f00ede314eb6 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -3980,20 +3980,11 @@ rb_simple_write(struct file *filp, const char __user *ubuf,
3980 size_t cnt, loff_t *ppos) 3980 size_t cnt, loff_t *ppos)
3981{ 3981{
3982 unsigned long *p = filp->private_data; 3982 unsigned long *p = filp->private_data;
3983 char buf[64];
3984 unsigned long val; 3983 unsigned long val;
3985 int ret; 3984 int ret;
3986 3985
3987 if (cnt >= sizeof(buf)) 3986 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
3988 return -EINVAL; 3987 if (ret)
3989
3990 if (copy_from_user(&buf, ubuf, cnt))
3991 return -EFAULT;
3992
3993 buf[cnt] = 0;
3994
3995 ret = strict_strtoul(buf, 10, &val);
3996 if (ret < 0)
3997 return ret; 3988 return ret;
3998 3989
3999 if (val) 3990 if (val)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index cf22b4bf9896..c977018e87c2 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -2706,20 +2706,11 @@ tracing_ctrl_write(struct file *filp, const char __user *ubuf,
2706 size_t cnt, loff_t *ppos) 2706 size_t cnt, loff_t *ppos)
2707{ 2707{
2708 struct trace_array *tr = filp->private_data; 2708 struct trace_array *tr = filp->private_data;
2709 char buf[64];
2710 unsigned long val; 2709 unsigned long val;
2711 int ret; 2710 int ret;
2712 2711
2713 if (cnt >= sizeof(buf)) 2712 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
2714 return -EINVAL; 2713 if (ret)
2715
2716 if (copy_from_user(&buf, ubuf, cnt))
2717 return -EFAULT;
2718
2719 buf[cnt] = 0;
2720
2721 ret = strict_strtoul(buf, 10, &val);
2722 if (ret < 0)
2723 return ret; 2714 return ret;
2724 2715
2725 val = !!val; 2716 val = !!val;
@@ -3006,20 +2997,11 @@ tracing_max_lat_write(struct file *filp, const char __user *ubuf,
3006 size_t cnt, loff_t *ppos) 2997 size_t cnt, loff_t *ppos)
3007{ 2998{
3008 unsigned long *ptr = filp->private_data; 2999 unsigned long *ptr = filp->private_data;
3009 char buf[64];
3010 unsigned long val; 3000 unsigned long val;
3011 int ret; 3001 int ret;
3012 3002
3013 if (cnt >= sizeof(buf)) 3003 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
3014 return -EINVAL; 3004 if (ret)
3015
3016 if (copy_from_user(&buf, ubuf, cnt))
3017 return -EFAULT;
3018
3019 buf[cnt] = 0;
3020
3021 ret = strict_strtoul(buf, 10, &val);
3022 if (ret < 0)
3023 return ret; 3005 return ret;
3024 3006
3025 *ptr = val * 1000; 3007 *ptr = val * 1000;
@@ -3474,19 +3456,10 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
3474 size_t cnt, loff_t *ppos) 3456 size_t cnt, loff_t *ppos)
3475{ 3457{
3476 unsigned long val; 3458 unsigned long val;
3477 char buf[64];
3478 int ret; 3459 int ret;
3479 3460
3480 if (cnt >= sizeof(buf)) 3461 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
3481 return -EINVAL; 3462 if (ret)
3482
3483 if (copy_from_user(&buf, ubuf, cnt))
3484 return -EFAULT;
3485
3486 buf[cnt] = 0;
3487
3488 ret = strict_strtoul(buf, 10, &val);
3489 if (ret < 0)
3490 return ret; 3463 return ret;
3491 3464
3492 /* must have at least 1 entry */ 3465 /* must have at least 1 entry */
@@ -4139,19 +4112,10 @@ trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
4139{ 4112{
4140 struct trace_option_dentry *topt = filp->private_data; 4113 struct trace_option_dentry *topt = filp->private_data;
4141 unsigned long val; 4114 unsigned long val;
4142 char buf[64];
4143 int ret; 4115 int ret;
4144 4116
4145 if (cnt >= sizeof(buf)) 4117 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4146 return -EINVAL; 4118 if (ret)
4147
4148 if (copy_from_user(&buf, ubuf, cnt))
4149 return -EFAULT;
4150
4151 buf[cnt] = 0;
4152
4153 ret = strict_strtoul(buf, 10, &val);
4154 if (ret < 0)
4155 return ret; 4119 return ret;
4156 4120
4157 if (val != 0 && val != 1) 4121 if (val != 0 && val != 1)
@@ -4199,20 +4163,11 @@ trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
4199 loff_t *ppos) 4163 loff_t *ppos)
4200{ 4164{
4201 long index = (long)filp->private_data; 4165 long index = (long)filp->private_data;
4202 char buf[64];
4203 unsigned long val; 4166 unsigned long val;
4204 int ret; 4167 int ret;
4205 4168
4206 if (cnt >= sizeof(buf)) 4169 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
4207 return -EINVAL; 4170 if (ret)
4208
4209 if (copy_from_user(&buf, ubuf, cnt))
4210 return -EFAULT;
4211
4212 buf[cnt] = 0;
4213
4214 ret = strict_strtoul(buf, 10, &val);
4215 if (ret < 0)
4216 return ret; 4171 return ret;
4217 4172
4218 if (val != 0 && val != 1) 4173 if (val != 0 && val != 1)
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 686ec399f2a8..4d7e1498ae91 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -486,20 +486,11 @@ event_enable_write(struct file *filp, const char __user *ubuf, size_t cnt,
486 loff_t *ppos) 486 loff_t *ppos)
487{ 487{
488 struct ftrace_event_call *call = filp->private_data; 488 struct ftrace_event_call *call = filp->private_data;
489 char buf[64];
490 unsigned long val; 489 unsigned long val;
491 int ret; 490 int ret;
492 491
493 if (cnt >= sizeof(buf)) 492 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
494 return -EINVAL; 493 if (ret)
495
496 if (copy_from_user(&buf, ubuf, cnt))
497 return -EFAULT;
498
499 buf[cnt] = 0;
500
501 ret = strict_strtoul(buf, 10, &val);
502 if (ret < 0)
503 return ret; 494 return ret;
504 495
505 ret = tracing_update_buffers(); 496 ret = tracing_update_buffers();
@@ -571,19 +562,10 @@ system_enable_write(struct file *filp, const char __user *ubuf, size_t cnt,
571{ 562{
572 const char *system = filp->private_data; 563 const char *system = filp->private_data;
573 unsigned long val; 564 unsigned long val;
574 char buf[64];
575 ssize_t ret; 565 ssize_t ret;
576 566
577 if (cnt >= sizeof(buf)) 567 ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
578 return -EINVAL; 568 if (ret)
579
580 if (copy_from_user(&buf, ubuf, cnt))
581 return -EFAULT;
582
583 buf[cnt] = 0;
584
585 ret = strict_strtoul(buf, 10, &val);
586 if (ret < 0)
587 return ret; 569 return ret;
588 570
589 ret = tracing_update_buffers(); 571 ret = tracing_update_buffers();
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index b0b53b8e4c25..77575b386d97 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -156,20 +156,11 @@ stack_max_size_write(struct file *filp, const char __user *ubuf,
156{ 156{
157 long *ptr = filp->private_data; 157 long *ptr = filp->private_data;
158 unsigned long val, flags; 158 unsigned long val, flags;
159 char buf[64];
160 int ret; 159 int ret;
161 int cpu; 160 int cpu;
162 161
163 if (count >= sizeof(buf)) 162 ret = kstrtoul_from_user(ubuf, count, 10, &val);
164 return -EINVAL; 163 if (ret)
165
166 if (copy_from_user(&buf, ubuf, count))
167 return -EFAULT;
168
169 buf[count] = 0;
170
171 ret = strict_strtoul(buf, 10, &val);
172 if (ret < 0)
173 return ret; 164 return ret;
174 165
175 local_irq_save(flags); 166 local_irq_save(flags);