-----Original Message-----
From: crash-utility-bounces(a)redhat.com
<crash-utility-bounces(a)redhat.com> On Behalf Of lijiang
Sent: Friday, August 14, 2020 8:31 AM
To: David Wysochanski <dwysocha(a)redhat.com>
Cc: Discussion list for crash utility usage, maintenance and development
<crash-utility(a)redhat.com>
Subject: Re: [Crash-utility] Crash-utility Digest, Vol 179, Issue 4
在 2020年08月13日 22:58, David Wysochanski 写道:
> On Thu, Aug 13, 2020 at 9:08 AM lijiang <lijiang(a)redhat.com> wrote:
>>
>> 在 2020年08月13日 16:33, David Wysochanski 写道:
>>> Hi Lianbo
>>>
>>> On Sat, Aug 8, 2020 at 10:46 PM lijiang <lijiang(a)redhat.com> wrote:
>>>>
>>>> 在 2020年08月07日 00:00, crash-utility-request(a)redhat.com 写道:
>>>>> Message: 5
>>>>> Date: Thu, 6 Aug 2020 09:30:22 -0400
>>>>> From: Dave Wysochanski <dwysocha(a)redhat.com>
>>>>> To: crash-utility(a)redhat.com
>>>>> Subject: [Crash-utility] [PATCH v3] Fix "log" command when
crash is
>>>>> started with "--minimal" option
>>>>> Message-ID: <20200806133022.2127538-1-dwysocha(a)redhat.com>
>>>>>
>>>>> 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.
>>>>>
>>>> Hi, Dave Wysochanski
>>>>
>>>> Thank you for the patch.
>>>>
>>>>> Fixes: c86250bce29f ("Introduction of the "log -T"
option...")
>>>>> Signed-off-by: Dave Wysochanski <dwysocha(a)redhat.com>
>>>>> Reviewed-by: Wang Long <w(a)laoqinren.net>
>>>>> Tested-by: Mathias Krause <minipli(a)grsecurity.net>
>>>>> ---
>>>>> kernel.c | 5 ++++-
>>>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/kernel.c b/kernel.c
>>>>> index 5ed6021..95119f3 100644
>>>>> --- a/kernel.c
>>>>> +++ b/kernel.c
>>>>> @@ -4939,7 +4939,10 @@ cmd_log(void)
>>>>> if (argerrs)
>>>>> cmd_usage(pc->curcmd, SYNOPSIS);
>>>>>
>>>>> - if (kt->boot_date.tv_sec == 0) {
>>>>> + if (msg_flags & SHOW_LOG_CTIME && pc->flags
& MINIMAL_MODE)
>>>>> + error(FATAL, "log: option 'T' not
available in minimal mode\n");
>>>>> +
>>>>> + if (msg_flags & SHOW_LOG_CTIME &&
kt->boot_date.tv_sec == 0) {
>>>>
>>>> The above two 'if' statements have the same checking condition,
would you mind putting them together
>>>> as a statement block? E.g:
>>>>
>>> Sure I can resubmit a fixup of v4 patch once there are no more changes
needed.
>>>
>>>> + if (msg_flags & SHOW_LOG_CTIME) {
>>>> + if (pc->flags & MINIMAL_MODE) {
>>>> + error(WARNING, "the option '-T' not
available in minimal mode\n");
>>>> + return;
>>>> + }
>>>> +
>>>> + if (kt->boot_date.tv_sec == 0) {
>>>> ...
>>>> + }
>>>> }
>>>>
>>>> In addition, might it be more reasonable to issue a warning instead of a
fatal error?
>>>>
>>>
>>> If you use WARNING it will not fix the infinite loop / CPU spin at
>>> 100%. You have to CTRL-C the crash program to get the prompt back.
>>> So I do not think this is a good idea.
>>>
>> How did you reproduce it? Can you help to confirm if you have applied the
correct patch
>> as below?
>>
>> [root@intel-sharkbay-mb-03 crash]# git diff kernel.c
>> diff --git a/kernel.c b/kernel.c
>> index 5ed6021..6375b24 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, "the 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) {
>>
>>
>> I didn't see any problems, it's strange, this is my test steps.
>>
>
> You are right - I missed the 'return;' in your patch. The WARNING is fine.
>
Thanks for your confirmation.
> How do you want to handle this? Do you want to take the original header
> and add your signed-off-by line and commit your patch? Or do you want
> me to resubmit with review-by or signed-off-by lines?
>
No, please do not add my signed-off-by and review-by line.
If you and Kazu have no objection, you could post it again with the above changes.
No objection. I can ack a new one with the above change.
Thanks,
Kazu
Otherwise Kazu can help to merge your last patch, because it can also
work.
Thanks.
Lianbo
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility