Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
@@ -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)