Commit c86250bce29f introduced the useful '-T' option to print the log timestamp in human-readable form. However, this option does not work when crash is invoked with '--minimal' mode, and if tried, crash will spin at 100% and continuously crash at a divide by 0 because machdep->hz == 0. Fix this by disallowing this option in minimal mode. In addition, only calculate the logic to calculate kt->boot_date.tv_sec when this option is enabled. Fixes: c86250bce29f ("Introduction of the "log -T" option...") Signed-off-by: Dave Wysochanski <dwysocha@xxxxxxxxxx> Reviewed-by: Wang Long <w@xxxxxxxxxxxxx> Tested-by: Mathias Krause <minipli@xxxxxxxxxxxxxx> Reviewed-by: Lianbo Jiang <lijiang@xxxxxxxxxx> --- kernel.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/kernel.c b/kernel.c index 5ed6021..9aa1d4d 100644 --- a/kernel.c +++ b/kernel.c @@ -4939,13 +4939,20 @@ cmd_log(void) if (argerrs) cmd_usage(pc->curcmd, SYNOPSIS); - if (kt->boot_date.tv_sec == 0) { - ulonglong uptime_jiffies; - ulong uptime_sec; - get_uptime(NULL, &uptime_jiffies); - uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz; - kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec; - kt->boot_date.tv_nsec = 0; + if (msg_flags & SHOW_LOG_CTIME) { + if (pc->flags & MINIMAL_MODE) { + error(WARNING, "log: option 'T' not available in minimal mode\n"); + return; + } + + if (kt->boot_date.tv_sec == 0) { + ulonglong uptime_jiffies; + ulong uptime_sec; + get_uptime(NULL, &uptime_jiffies); + uptime_sec = (uptime_jiffies)/(ulonglong)machdep->hz; + kt->boot_date.tv_sec = kt->date.tv_sec - uptime_sec; + kt->boot_date.tv_nsec = 0; + } } if (msg_flags & SHOW_LOG_AUDIT) { -- 2.27.0 -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility