diff options
author | Baolin Wang <baolin.wang@linaro.org> | 2018-01-29 10:22:51 +0800 |
---|---|---|
committer | Jason Wessel <jason.wessel@windriver.com> | 2018-01-31 21:31:09 -0600 |
commit | 40b90efeae9be8702d387dbcbb3aadc57033d4db (patch) | |
tree | 08dd529110a106de84a75777b056134757e5b74f /kernel | |
parent | 33f765f698895527acd69faf5d54ab07f02683ff (diff) | |
download | linux-stable-40b90efeae9be8702d387dbcbb3aadc57033d4db.tar.gz linux-stable-40b90efeae9be8702d387dbcbb3aadc57033d4db.tar.bz2 linux-stable-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.c | 6 |
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]; |