lkml.org 
[lkml]   [2006]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subjectled_class: storing a value can act but return -EINVAL
    From
    Date
    When I store something into the brightness sysfs attribute of an LED, it
    will accept the value but return -EINVAL:

    johannes:/sys/class/leds/pmu-front-led# echo 255 > brightness
    bash: echo: write error: Invalid argument

    (yet the LED turns on)

    This happens because the store callback doesn't consume all the input.

    There are two possible ways to handle this:
    a) accept anything that begins with a valid number.
    b) reject anything that isn't *only* a number

    The following patch implements a), for b) you'd have to make the if
    statement have ' && after-buf == size' instead of this patch.

    I don't know which approach is generally preferred, but acting and then
    returning an error value doesn't seem nice.
    Maybe b) should be implemented instead to stop people from storing
    things like '0 hahaha stupid kernel ignores this' into the attribute :)

    johannes

    --- linux-2.6.orig/drivers/leds/led-class.c 2006-04-29 13:23:49.013288994 +0200
    +++ linux-2.6/drivers/leds/led-class.c 2006-04-29 13:28:14.183288994 +0200
    @@ -45,7 +45,7 @@ static ssize_t led_brightness_store(stru
    unsigned long state = simple_strtoul(buf, &after, 10);

    if (after - buf > 0) {
    - ret = after - buf;
    + ret = size;
    led_set_brightness(led_cdev, state);
    }


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-04-29 13:37    [W:0.031 / U:0.064 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site