[PATCH linux dev-5.1] hwmon (occ): Fix division by zero issue

Lei YU mine260309 at gmail.com
Thu Jul 11 12:02:06 AEST 2019


Sure, will do.

On Thu, Jul 11, 2019 at 9:51 AM Joel Stanley <joel at jms.id.au> wrote:
>
> On Mon, 8 Jul 2019 at 15:19, Eddie James <eajames at linux.vnet.ibm.com> wrote:
> >
> >
> > On 7/8/19 3:32 AM, Lei YU wrote:
> > > The code in occ_get_powr_avg() invokes div64_u64() without checking the
> > > divisor. In case the divisor is zero, kernel gets an "Division by zero
> > > in kernel" error.
> > >
> > > Check the divisor and make it return 0 if the divisor is 0.
> >
> >
> > Thanks!
> >
> > Reviewed-by: Eddie James <eajames at linux.ibm.com>
>
> Merged into dev-5.2.
>
> Lei, can you please submit this to upstream? Please add Eddie's r-b to
> the commit message.
>
> Cheers,
>
> Joel
>
> >
> >
> > >
> > > Signed-off-by: Lei YU <mine260309 at gmail.com>
> > > ---
> > >   drivers/hwmon/occ/common.c | 6 ++++--
> > >   1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
> > > index e9d7167..15c5d43 100644
> > > --- a/drivers/hwmon/occ/common.c
> > > +++ b/drivers/hwmon/occ/common.c
> > > @@ -406,8 +406,10 @@ static ssize_t occ_show_power_1(struct device *dev,
> > >
> > >   static u64 occ_get_powr_avg(u64 *accum, u32 *samples)
> > >   {
> > > -     return div64_u64(get_unaligned_be64(accum) * 1000000ULL,
> > > -                      get_unaligned_be32(samples));
> > > +     u64 divisor = get_unaligned_be32(samples);
> > > +
> > > +     return (divisor == 0) ? 0 :
> > > +             div64_u64(get_unaligned_be64(accum) * 1000000ULL, divisor);
> > >   }
> > >
> > >   static ssize_t occ_show_power_2(struct device *dev,
> >


More information about the openbmc mailing list