mirror of
https://github.com/crash-utility/crash
synced 2025-02-23 00:46:48 +00:00
Fix for the x86_64 "bt" command in Linux 4.16 and later kernels
containing commit 3aa99fc3e708b9cd9b4cfe2df0b7a66cf293e3cf, titled "x86/entry/64: Remove 'interrupt' macro". Without the patch, the exception frame display generated by an interrupt exception will show incorrect contents, and be followed by the message "bt: WARNING: possibly bogus exception frame". (anderson@redhat.com)
This commit is contained in:
parent
e5df29d54b
commit
a7e5b90757
9
x86_64.c
9
x86_64.c
@ -4285,6 +4285,12 @@ x86_64_exception_frame(ulong flags, ulong kvaddr, char *local,
|
||||
long err;
|
||||
char buf[BUFSIZE];
|
||||
|
||||
if (flags == EFRAME_VERIFY) {
|
||||
if (!accessible(kvaddr) ||
|
||||
!accessible(kvaddr + SIZE(pt_regs) - sizeof(long)))
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ms = machdep->machspec;
|
||||
sp = NULL;
|
||||
|
||||
@ -6283,6 +6289,9 @@ x86_64_irq_eframe_link(ulong stkref, struct bt_info *bt, FILE *ofp)
|
||||
{
|
||||
ulong irq_eframe;
|
||||
|
||||
if (x86_64_exception_frame(EFRAME_VERIFY, stkref, 0, bt, ofp))
|
||||
return stkref;
|
||||
|
||||
irq_eframe = stkref - machdep->machspec->irq_eframe_link;
|
||||
|
||||
if (x86_64_exception_frame(EFRAME_VERIFY, irq_eframe, 0, bt, ofp))
|
||||
|
Loading…
Reference in New Issue
Block a user