[Crash-utility] Re: [PATCH] bugfix command "help -r" segv fault

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



LGTM, ack for this patch.

Thanks,
Tao Liu

On Fri, Nov 1, 2024 at 11:01 PM Guanyou Chen <chenguanyou9338@xxxxxxxxx> wrote:
>
> Hi Lianbo, Tao
>
> When the ELF Note does not contain CPU registers,
> attempting to retrieve online CPU registers will cause a crash.
>
> After:
> CPU 6:
> help: registers not collected for cpu 6
> ...
>
> Signed-off-by: Guanyou.Chen <chenguanyou@xxxxxxxxxx>
> ---
>  netdump.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/netdump.c b/netdump.c
> index 8ea5159..435793b 100644
> --- a/netdump.c
> +++ b/netdump.c
> @@ -2780,6 +2780,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>                 nd->nt_prstatus_percpu[cpu];
>         else
>                     note64 = (Elf64_Nhdr *)nd->nt_prstatus;
> +       if (!note64) {
> +           error(INFO, "registers not collected for cpu %d\n", cpu);
> +           return;
> +       }
>         len = sizeof(Elf64_Nhdr);
>         len = roundup(len + note64->n_namesz, 4);
>         len = roundup(len + note64->n_descsz, 4);
> @@ -2820,6 +2824,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>                 nd->nt_prstatus_percpu[cpu];
>         else
>                     note32 = (Elf32_Nhdr *)nd->nt_prstatus;
> +       if (!note32) {
> +           error(INFO, "registers not collected for cpu %d\n", cpu);
> +           return;
> +       }
>         len = sizeof(Elf32_Nhdr);
>         len = roundup(len + note32->n_namesz, 4);
>         len = roundup(len + note32->n_descsz, 4);
> @@ -2857,6 +2865,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>         else
>             note64 = (Elf64_Nhdr *)nd->nt_prstatus;
>
> +       if (!note64) {
> +           error(INFO, "registers not collected for cpu %d\n", cpu);
> +           return;
> +       }
>         prs = (struct ppc64_elf_prstatus *)
>             ((char *)note64 + sizeof(Elf64_Nhdr) + note64->n_namesz);
>         prs = (struct ppc64_elf_prstatus *)roundup((ulong)prs, 4);
> @@ -2903,6 +2915,10 @@ display_regs_from_elf_notes(int cpu, FILE *ofp)
>                 nd->nt_prstatus_percpu[cpu];
>         else
>                     note64 = (Elf64_Nhdr *)nd->nt_prstatus;
> +       if (!note64) {
> +           error(INFO, "registers not collected for cpu %d\n", cpu);
> +           return;
> +       }
>         len = sizeof(Elf64_Nhdr);
>         len = roundup(len + note64->n_namesz, 4);
>         len = roundup(len + note64->n_descsz, 4);
> --
> 2.34.1
>
> Guanyou.
> Thanks
--
Crash-utility mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxxxxxx
https://${domain_name}/admin/lists/devel.lists.crash-utility.osci.io/
Contribution Guidelines: https://github.com/crash-utility/crash/wiki




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux