lkml.org 
[lkml]   [2014]   [Feb]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13 32/99] hwmon: (ntc_thermistor) Avoid math overflow
    Date
    3.13-stable review patch.  If anyone has any objections, please let me know.

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

    From: Doug Anderson <dianders@chromium.org>

    commit d3d89c468ceebbcf9423d1a3d66c5bf91f569570 upstream.

    The ntc thermistor code was doing math whose temporary result might
    have overflowed 32-bits. We need some casts in there to make it safe.

    In one example I found:
    - pullup_uV: 1800000
    - result of iio_read_channel_raw: 3226
    - 1800000 * 3226 => 0x15a1cbc80

    Signed-off-by: Doug Anderson <dianders@chromium.org>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

    --- a/drivers/hwmon/ntc_thermistor.c
    +++ b/drivers/hwmon/ntc_thermistor.c
    @@ -145,7 +145,7 @@ struct ntc_data {
    static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata)
    {
    struct iio_channel *channel = pdata->chan;
    - unsigned int result;
    + s64 result;
    int val, ret;

    ret = iio_read_channel_raw(channel, &val);
    @@ -155,10 +155,10 @@ static int ntc_adc_iio_read(struct ntc_t
    }

    /* unit: mV */
    - result = pdata->pullup_uv * val;
    + result = pdata->pullup_uv * (s64) val;
    result >>= 12;

    - return result;
    + return (int)result;
    }

    static const struct of_device_id ntc_match[] = {



    \
     
     \ /
      Last update: 2014-02-21 01:41    [W:4.107 / U:0.540 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site