On 2015/3/5 11:05, arei.gong...@huawei.com wrote: > From: Gonglei <arei.gong...@huawei.com> > > When not assign a -dtb argument, the variable dtb_filename > storage returned from qemu_find_file(), which should be freed > after use. Alternatively we define a local variable filename, > with 'char *' type, free after use. > > Cc: Michael Tokarev <m...@tls.msk.ru> > Cc: Edgar E. Iglesias <edgar.igles...@gmail.com> > Signed-off-by: Gonglei <arei.gong...@huawei.com> > --- > v2: fix a complier error. > --- > hw/microblaze/boot.c | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) >
Ping... > diff --git a/hw/microblaze/boot.c b/hw/microblaze/boot.c > index a2843cd..352ccb1 100644 > --- a/hw/microblaze/boot.c > +++ b/hw/microblaze/boot.c > @@ -113,15 +113,15 @@ void microblaze_load_kernel(MicroBlazeCPU *cpu, hwaddr > ddr_base, > const char *kernel_filename; > const char *kernel_cmdline; > const char *dtb_arg; > + char *filename = NULL; > > machine_opts = qemu_get_machine_opts(); > kernel_filename = qemu_opt_get(machine_opts, "kernel"); > kernel_cmdline = qemu_opt_get(machine_opts, "append"); > dtb_arg = qemu_opt_get(machine_opts, "dtb"); > - if (dtb_arg) { /* Preference a -dtb argument */ > - dtb_filename = dtb_arg; > - } else { /* default to pcbios dtb as passed by machine_init */ > - dtb_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, dtb_filename); > + /* default to pcbios dtb as passed by machine_init */ > + if (!dtb_arg) { > + filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, dtb_filename); > } > > boot_info.machine_cpu_reset = machine_cpu_reset; > @@ -203,7 +203,8 @@ void microblaze_load_kernel(MicroBlazeCPU *cpu, hwaddr > ddr_base, > boot_info.initrd_start, > boot_info.initrd_end, > kernel_cmdline, > - dtb_filename); > + /* Preference a -dtb argument */ > + dtb_arg ? dtb_arg : filename); > } > - > + g_free(filename); > } >