lkml.org 
[lkml]   [2015]   [Jul]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.1 44/65] regulator: max77686: fix gpio_enabled shift wrapping bug
    Date
    4.1-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Joe Perches <joe@perches.com>

    commit c53403a37cf083ce85da720f18918f73580d0064 upstream.

    The code should handle more than 32 bits here because "id"
    can be a value up to MAX77686_REGULATORS (currently 34).

    Convert the gpio_enabled type to DECLARE_BITMAP and use
    test_bit/set_bit.

    Fixes: 3307e9025d29 ("regulator: max77686: Add GPIO control")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Joe Perches <joe@perches.com>
    Reviewed-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/regulator/max77686.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/regulator/max77686.c
    +++ b/drivers/regulator/max77686.c
    @@ -88,7 +88,7 @@ enum max77686_ramp_rate {
    };

    struct max77686_data {
    - u64 gpio_enabled:MAX77686_REGULATORS;
    + DECLARE_BITMAP(gpio_enabled, MAX77686_REGULATORS);

    /* Array indexed by regulator id */
    unsigned int opmode[MAX77686_REGULATORS];
    @@ -121,7 +121,7 @@ static unsigned int max77686_map_normal_
    case MAX77686_BUCK8:
    case MAX77686_BUCK9:
    case MAX77686_LDO20 ... MAX77686_LDO22:
    - if (max77686->gpio_enabled & (1 << id))
    + if (test_bit(id, max77686->gpio_enabled))
    return MAX77686_GPIO_CONTROL;
    }

    @@ -277,7 +277,7 @@ static int max77686_of_parse_cb(struct d
    }

    if (gpio_is_valid(config->ena_gpio)) {
    - max77686->gpio_enabled |= (1 << desc->id);
    + set_bit(desc->id, max77686->gpio_enabled);

    return regmap_update_bits(config->regmap, desc->enable_reg,
    desc->enable_mask,



    \
     
     \ /
      Last update: 2015-07-19 22:01    [W:4.130 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site