[Crash-utility] [PATCH v3 0/4] Generalize KASLR calculation and use it for KDUMPs

Sergio Lopez slp at redhat.com
Wed Mar 21 12:11:35 UTC 2018


On Tue, Mar 20, 2018 at 04:12:04PM -0400, Dave Anderson wrote:
> 
> Hi Sergio,  (and Takao and Daisuke)
> 
> This patch to map_cpus_to_prstatus_kdump_cmprs():
> 
> @@ -153,8 +154,13 @@ resize_note_pointers:
>                             dd->num_qemu_notes * sizeof(void *))) == NULL)
>                                 error(FATAL,
>                                     "compressed kdump: cannot realloc QEMU note pointers\n");
> +                       if  ((dd->nt_qemucs_percpu = realloc(dd->nt_qemucs_percpu,
> +                           dd->num_qemu_notes * sizeof(void *))) == NULL)
> +                               error(FATAL,
> +                                   "compressed kdump: cannot realloc QEMU note pointers\n");
>                 } else
>                         free(dd->nt_qemu_percpu);
> +                       free(dd->nt_qemucs_percpu);
>         }
>  }
> 
> is missing brackets around the else clause, resulting in:
> 
>         if (machine_type("X86_64") || machine_type("X86") ||
>             machine_type("ARM64")) {
>                 if ((dd->nt_prstatus_percpu = realloc(dd->nt_prstatus_percpu,
>                     dd->num_prstatus_notes * sizeof(void *))) == NULL)
>                         error(FATAL,
>                             "compressed kdump: cannot realloc NT_PRSTATUS note pointers\n");
>                 if (dd->num_qemu_notes) {
>                         if  ((dd->nt_qemu_percpu = realloc(dd->nt_qemu_percpu,
>                             dd->num_qemu_notes * sizeof(void *))) == NULL)
>                                 error(FATAL,
>                                     "compressed kdump: cannot realloc QEMU note pointers\n");
>                         if  ((dd->nt_qemucs_percpu = realloc(dd->nt_qemucs_percpu,
>                             dd->num_qemu_notes * sizeof(void *))) == NULL)
>                                 error(FATAL,
>                                     "compressed kdump: cannot realloc QEMU note pointers\n");
>                 } else
>                         free(dd->nt_qemu_percpu);
>                         free(dd->nt_qemucs_percpu);
>         }
> 
> So as soon as the realloc(dd->nt_qemucs_percpu, ...) is done, it gets free()'d.
> So I'm not sure how your testing worked, but presumably, the freed data 
> remained untouched at least long enough to get the job done during 
> initialization.

Ouch, thanks for catching this one. I'm not really used to mixing both
styles.

> One minor nit -- in order to be able to search for functions in a file 
> by entering "^function_name", I prefer that function names always be 
> placed on their own line, with the return type or void on the line above.  

Ack, will keep then in mind in the future.

Sergio.




More information about the Crash-utility mailing list