Commit 2189459d authored by Joe Korty's avatar Joe Korty Committed by Ingo Molnar

lockstat: fix numerical output rounding error

Fix rounding error in /proc/lock_stat numerical output.

On occasion the two digit fractional part contains the three
digit value '100'.  This is due to a bug in the rounding algorithm
which pushes values in the range '95..99' to '100' rather than
to '00' + an increment to the integer part.  For example,

	- 123456.100      old display
	+ 123457.00	  new display
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 83097aca
...@@ -472,8 +472,9 @@ static void snprint_time(char *buf, size_t bufsiz, s64 nr) ...@@ -472,8 +472,9 @@ static void snprint_time(char *buf, size_t bufsiz, s64 nr)
{ {
unsigned long rem; unsigned long rem;
nr += 5; /* for display rounding */
rem = do_div(nr, 1000); /* XXX: do_div_signed */ rem = do_div(nr, 1000); /* XXX: do_div_signed */
snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, ((int)rem+5)/10); snprintf(buf, bufsiz, "%lld.%02d", (long long)nr, (int)rem/10);
} }
static void seq_time(struct seq_file *m, s64 time) static void seq_time(struct seq_file *m, s64 time)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment