On 10/29/2014 01:43 AM, Dmitry Torokhov wrote: > Expression haptic->pwm_dev->period * haptic->magnitude is of type 'unsigned > int' and may overflow. We need to convert one of the operands to u64 before > multiplying, instead of casting result (potentially overflown) to u64. > > Reported by Coverity: CID 1248753 > > Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx> > --- > drivers/input/misc/max77693-haptic.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/input/misc/max77693-haptic.c b/drivers/input/misc/max77693-haptic.c > index 7b1fde9..ef6a9d6 100644 > --- a/drivers/input/misc/max77693-haptic.c > +++ b/drivers/input/misc/max77693-haptic.c > @@ -194,7 +194,7 @@ static int max77693_haptic_play_effect(struct input_dev *dev, void *data, > struct ff_effect *effect) > { > struct max77693_haptic *haptic = input_get_drvdata(dev); > - uint64_t period_mag_multi; > + u64 period_mag_multi; > > haptic->magnitude = effect->u.rumble.strong_magnitude; > if (!haptic->magnitude) > @@ -205,8 +205,7 @@ static int max77693_haptic_play_effect(struct input_dev *dev, void *data, > * The formula to convert magnitude to pwm_duty as follows: > * - pwm_duty = (magnitude * pwm_period) / MAX_MAGNITUDE(0xFFFF) > */ > - period_mag_multi = (int64_t)(haptic->pwm_dev->period * > - haptic->magnitude); > + period_mag_multi = (u64)haptic->pwm_dev->period * haptic->magnitude; > haptic->pwm_duty = (unsigned int)(period_mag_multi >> > MAX_MAGNITUDE_SHIFT); > > Looks good to me. Reviewed-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx> Thanks, Chanwoo Choi -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html