uid_cputime: fix cputime overflow
authorJin Qian <jinqian@google.com>
Tue, 14 Jul 2015 01:16:55 +0000 (18:16 -0700)
committerJohn Stultz <john.stultz@linaro.org>
Tue, 16 Feb 2016 21:53:53 +0000 (13:53 -0800)
Converting cputime_t to usec caused overflow when the value is greater
than 1 hour. Use msec and convert to unsigned long long to support bigger
range.

Bug: 22461683

Change-Id: I853fe3e8e7dbf0d3e2cc5c6f9688a5a6e1f1fb3e
Signed-off-by: Jin Qian <jinqian@google.com>
drivers/misc/uid_cputime.c

index 012bd3505ed58a0d210dd0805ef808c50a0ad9ec..75843985c0e866b64c70af2826911e66f2a49a5b 100644 (file)
@@ -119,10 +119,12 @@ static int uid_stat_show(struct seq_file *m, void *v)
                                                        uid_entry->active_stime;
                unsigned long long total_power = uid_entry->power +
                                                        uid_entry->active_power;
-               seq_printf(m, "%d: %u %u %llu\n", uid_entry->uid,
-                                               cputime_to_usecs(total_utime),
-                                               cputime_to_usecs(total_stime),
-                                               total_power);
+               seq_printf(m, "%d: %llu %llu %llu\n", uid_entry->uid,
+                       (unsigned long long)jiffies_to_msecs(
+                               cputime_to_jiffies(total_utime)) * USEC_PER_MSEC,
+                       (unsigned long long)jiffies_to_msecs(
+                               cputime_to_jiffies(total_stime)) * USEC_PER_MSEC,
+                       total_power);
        }
 
        mutex_unlock(&uid_lock);