net sched: fix reporting the first-time use timestamp
authorRoman Mashak <mrv@mojatatu.com>
Sun, 17 May 2020 12:46:31 +0000 (08:46 -0400)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 May 2020 00:32:19 +0000 (17:32 -0700)
When a new action is installed, firstuse field of 'tcf_t' is explicitly set
to 0. Value of zero means "new action, not yet used"; as a packet hits the
action, 'firstuse' is stamped with the current jiffies value.

tcf_tm_dump() should return 0 for firstuse if action has not yet been hit.

Fixes: 48d8ee1694dd ("net sched actions: aggregate dumping of actions timeinfo")
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Roman Mashak <mrv@mojatatu.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/act_api.h

index c24d764..124bd13 100644 (file)
@@ -75,7 +75,8 @@ static inline void tcf_tm_dump(struct tcf_t *dtm, const struct tcf_t *stm)
 {
        dtm->install = jiffies_to_clock_t(jiffies - stm->install);
        dtm->lastuse = jiffies_to_clock_t(jiffies - stm->lastuse);
-       dtm->firstuse = jiffies_to_clock_t(jiffies - stm->firstuse);
+       dtm->firstuse = stm->firstuse ?
+               jiffies_to_clock_t(jiffies - stm->firstuse) : 0;
        dtm->expires = jiffies_to_clock_t(stm->expires);
 }