[PATCH linux dev-4.10] hwmon (occ): Fix integer overflow in multiplication

Eddie James eajames at linux.vnet.ibm.com
Wed Dec 20 06:56:47 AEDT 2017



On 12/18/2017 08:27 PM, Lei YU wrote:
> Hi Eddie,
>
> Except for the values for power, the value used for temperature is u16
> and overflows
> as well.
> Powercore reports that if the temperature goes over 65 degrees, the
> value overflows
> obviously as long as it is over 65535.
>
> Could you fix this as well?

Yep, thanks for spotting that.

Eddie

>
> Thanks!
>
> --
> BRs,
> Lei YU
>
> On Mon, Dec 18, 2017 at 10:11 PM, Joel Stanley <joel at jms.id.au> wrote:
>> On Sat, Dec 9, 2017 at 8:47 AM, Eddie James <eajames at linux.vnet.ibm.com> wrote:
>>>
>>> On 12/08/2017 12:16 AM, Joel Stanley wrote:
>>>> On Thu, Dec 7, 2017 at 5:49 AM, Eddie James <eajames at linux.vnet.ibm.com>
>>>> wrote:
>>>>> --- a/drivers/hwmon/occ/common.c
>>>>> +++ b/drivers/hwmon/occ/common.c
>>>>> @@ -468,7 +468,7 @@ static ssize_t occ_show_power_1(struct device *dev,
>>>>>                                   struct device_attribute *attr, char
>>>>> *buf)
>>>>>    {
>>>>>           int rc;
>>>>> -       u32 val = 0;
>>>>> +       u64 val = 0;
>>>>>           struct power_sensor_1 *power;
>>>>>           struct occ *occ = dev_get_drvdata(dev);
>>>>>           struct occ_sensors *sensors = &occ->sensors;
>>>>> @@ -491,11 +491,11 @@ static ssize_t occ_show_power_1(struct device *dev,
>>>>>                   val = get_unaligned_be32(&power->accumulator);
>>>>>                   break;
>>>>>           case 3:
>>>>> -               val = get_unaligned_be16(&power->value) * 1000000;
>>>>> +               val = (u64)get_unaligned_be16(&power->value) *
>>>>> 1000000ULL;
>>>> I don't think these casts are required, are they?
>>>
>>> I'm not at all sure. I didn't think adding ULL was required here, but
>>> apparently it is. I don't really trust GCC...
>> Sorry, I thought you were joking here. GCC is behaving as it should.
>> Hit me up on IRC for an explanation sometime.
>>
>> Can you resend without the casts?
>>
>> Cheers,
>>
>> Joel



More information about the openbmc mailing list