summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBaolin Wang <baolin.wang@linaro.org>2018-01-29 10:22:51 +0800
committerJason Wessel <jason.wessel@windriver.com>2018-01-31 21:31:09 -0600
commit40b90efeae9be8702d387dbcbb3aadc57033d4db (patch)
tree08dd529110a106de84a75777b056134757e5b74f /kernel
parent33f765f698895527acd69faf5d54ab07f02683ff (diff)
downloadlinux-40b90efeae9be8702d387dbcbb3aadc57033d4db.tar.gz
linux-40b90efeae9be8702d387dbcbb3aadc57033d4db.tar.bz2
linux-40b90efeae9be8702d387dbcbb3aadc57033d4db.zip
kdb: use ktime_get_mono_fast_ns() instead of ktime_get_ts()
The kdb code will print the monotonic time by ktime_get_ts(), but the ktime_get_ts() will be protected by a sequence lock, that will introduce one deadlock risk if the lock was already held in the context from which we entered the debugger. Thus we can use the ktime_get_mono_fast_ns() to get the monotonic time, which is NMI safe access to clock monotonic. Moreover we can remove the 'struct timespec', which is not y2038 safe. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Reviewed-by: Daniel Thompson <daniel.thompson@linaro.org> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/debug/kdb/kdb_main.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 6055231544a0..16140d1aa0c3 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -2512,10 +2512,10 @@ static int kdb_kill(int argc, const char **argv)
*/
static void kdb_sysinfo(struct sysinfo *val)
{
- struct timespec uptime;
- ktime_get_ts(&uptime);
+ u64 uptime = ktime_get_mono_fast_ns();
+
memset(val, 0, sizeof(*val));
- val->uptime = uptime.tv_sec;
+ val->uptime = div_u64(uptime, NSEC_PER_SEC);
val->loads[0] = avenrun[0];
val->loads[1] = avenrun[1];
val->loads[2] = avenrun[2];