lkml.org 
[lkml]   [2011]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 11/15] tracing: Convert to kstrtoul_from_user
    From: Peter Huewe <peterhuewe@gmx.de>

    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>
    ---
    kernel/trace/ftrace.c | 13 +-------
    kernel/trace/ring_buffer.c | 13 +-------
    kernel/trace/trace.c | 65 ++++++------------------------------------
    kernel/trace/trace_events.c | 26 ++--------------
    kernel/trace/trace_stack.c | 13 +-------
    5 files changed, 20 insertions(+), 110 deletions(-)

    diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
    index e153807..458018a 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,
    size_t cnt, loff_t *ppos)
    {
    unsigned long val;
    - char buf[64]; /* big enough to hold a number */
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    val = !!val;
    diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
    index 2780e60..7c5d1c2 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,
    size_t cnt, loff_t *ppos)
    {
    unsigned long *p = filp->private_data;
    - char buf[64];
    unsigned long val;
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    if (val)
    diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
    index 3d5e17a..b05eb28 100644
    --- a/kernel/trace/trace.c
    +++ b/kernel/trace/trace.c
    @@ -2705,20 +2705,11 @@ tracing_ctrl_write(struct file *filp, const char __user *ubuf,
    size_t cnt, loff_t *ppos)
    {
    struct trace_array *tr = filp->private_data;
    - char buf[64];
    unsigned long val;
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    val = !!val;
    @@ -3005,20 +2996,11 @@ tracing_max_lat_write(struct file *filp, const char __user *ubuf,
    size_t cnt, loff_t *ppos)
    {
    unsigned long *ptr = filp->private_data;
    - char buf[64];
    unsigned long val;
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    *ptr = val * 1000;
    @@ -3499,19 +3481,10 @@ tracing_entries_write(struct file *filp, const char __user *ubuf,
    size_t cnt, loff_t *ppos)
    {
    unsigned long val;
    - char buf[64];
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    /* must have at least 1 entry */
    @@ -4173,19 +4146,10 @@ trace_options_write(struct file *filp, const char __user *ubuf, size_t cnt,
    {
    struct trace_option_dentry *topt = filp->private_data;
    unsigned long val;
    - char buf[64];
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    if (val != 0 && val != 1)
    @@ -4233,20 +4197,11 @@ trace_options_core_write(struct file *filp, const char __user *ubuf, size_t cnt,
    loff_t *ppos)
    {
    long index = (long)filp->private_data;
    - char buf[64];
    unsigned long val;
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    if (val != 0 && val != 1)
    diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
    index 686ec39..4d7e149 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,
    loff_t *ppos)
    {
    struct ftrace_event_call *call = filp->private_data;
    - char buf[64];
    unsigned long val;
    int ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    ret = tracing_update_buffers();
    @@ -571,19 +562,10 @@ system_enable_write(struct file *filp, const char __user *ubuf, size_t cnt,
    {
    const char *system = filp->private_data;
    unsigned long val;
    - char buf[64];
    ssize_t ret;

    - if (cnt >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, cnt))
    - return -EFAULT;
    -
    - buf[cnt] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, cnt, 10, &val);
    + if (ret)
    return ret;

    ret = tracing_update_buffers();
    diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
    index b0b53b8..77575b3 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,
    {
    long *ptr = filp->private_data;
    unsigned long val, flags;
    - char buf[64];
    int ret;
    int cpu;

    - if (count >= sizeof(buf))
    - return -EINVAL;
    -
    - if (copy_from_user(&buf, ubuf, count))
    - return -EFAULT;
    -
    - buf[count] = 0;
    -
    - ret = strict_strtoul(buf, 10, &val);
    - if (ret < 0)
    + ret = kstrtoul_from_user(ubuf, count, 10, &val);
    + if (ret)
    return ret;

    local_irq_save(flags);
    --
    1.7.4.4



    \
     
     \ /
      Last update: 2011-06-09 19:31    [W:0.056 / U:0.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site