From 60204c81e47dfdb1ef066c3cb2cfd0f3f19570df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Date: Wed, 3 Mar 2021 13:30:18 +0100 Subject: [PATCH] q_cake: Fix incorrect printing of signed values in class statistics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The deficit returned from the kernel is signed, but was printed with a %u specifier in the format string, leading to negative values to be printed as high unsigned values instead. In addition, we passed a negative value to sprint_time() even though that expects an unsigned value. Fix this by changing the format specifier and reversing the sign of negative time values. Fixes: 714444c0cb26 ("Add support for CAKE qdisc") Signed-off-by: Toke Høiland-Jørgensen Signed-off-by: Stephen Hemminger --- tc/q_cake.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tc/q_cake.c b/tc/q_cake.c index b7da731b..4ff6056a 100644 --- a/tc/q_cake.c +++ b/tc/q_cake.c @@ -675,7 +675,7 @@ static int cake_print_xstats(struct qdisc_util *qu, FILE *f, /* class stats */ if (st[TCA_CAKE_STATS_DEFICIT]) - print_int(PRINT_ANY, "deficit", " deficit %u", + print_int(PRINT_ANY, "deficit", " deficit %d", GET_STAT_S32(DEFICIT)); if (st[TCA_CAKE_STATS_COBALT_COUNT]) print_uint(PRINT_ANY, "count", " count %u", @@ -688,7 +688,7 @@ static int cake_print_xstats(struct qdisc_util *qu, FILE *f, if (drop_next < 0) { print_string(PRINT_FP, NULL, " drop_next -%s", - sprint_time(drop_next, b1)); + sprint_time(-drop_next, b1)); } else { print_uint(PRINT_JSON, "drop_next", NULL, drop_next);