lkml.org 
[lkml]   [2021]   [Apr]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] hwmon: (occ) Fix poll rate limiting
    On Thu, Apr 29, 2021 at 10:13:36AM -0500, Eddie James wrote:
    > The poll rate limiter time was initialized at zero. This breaks the
    > comparison in time_after if jiffies is large. Switch to storing the
    > next update time rather than the previous time, and initialize the
    > time when the device is probed.
    >
    > Fixes: c10e753d43eb ("hwmon (occ): Add sensor types and versions")
    > Signed-off-by: Eddie James <eajames@linux.ibm.com>

    Applied.

    Thanks,
    Guenter

    > ---
    > drivers/hwmon/occ/common.c | 5 +++--
    > drivers/hwmon/occ/common.h | 2 +-
    > 2 files changed, 4 insertions(+), 3 deletions(-)
    >
    > diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c
    > index f1ac153d0b56..967532afb1c0 100644
    > --- a/drivers/hwmon/occ/common.c
    > +++ b/drivers/hwmon/occ/common.c
    > @@ -217,9 +217,9 @@ int occ_update_response(struct occ *occ)
    > return rc;
    >
    > /* limit the maximum rate of polling the OCC */
    > - if (time_after(jiffies, occ->last_update + OCC_UPDATE_FREQUENCY)) {
    > + if (time_after(jiffies, occ->next_update)) {
    > rc = occ_poll(occ);
    > - occ->last_update = jiffies;
    > + occ->next_update = jiffies + OCC_UPDATE_FREQUENCY;
    > } else {
    > rc = occ->last_error;
    > }
    > @@ -1165,6 +1165,7 @@ int occ_setup(struct occ *occ, const char *name)
    > return rc;
    > }
    >
    > + occ->next_update = jiffies + OCC_UPDATE_FREQUENCY;
    > occ_parse_poll_response(occ);
    >
    > rc = occ_setup_sensor_attrs(occ);
    > diff --git a/drivers/hwmon/occ/common.h b/drivers/hwmon/occ/common.h
    > index 67e6968b8978..e6df719770e8 100644
    > --- a/drivers/hwmon/occ/common.h
    > +++ b/drivers/hwmon/occ/common.h
    > @@ -99,7 +99,7 @@ struct occ {
    > u8 poll_cmd_data; /* to perform OCC poll command */
    > int (*send_cmd)(struct occ *occ, u8 *cmd);
    >
    > - unsigned long last_update;
    > + unsigned long next_update;
    > struct mutex lock; /* lock OCC access */
    >
    > struct device *hwmon;

    \
     
     \ /
      Last update: 2021-04-30 03:24    [W:2.631 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site