Skip to content

Commit

Permalink
microblaze: fix memory leak
Browse files Browse the repository at this point in the history
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.

Signed-off-by: Gonglei <arei.gonglei@huawei.com>
Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
  • Loading branch information
gongleiarei authored and Michael Tokarev committed Apr 30, 2015
1 parent fee068e commit 4d85040
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions hw/microblaze/boot.c
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}

0 comments on commit 4d85040

Please sign in to comment.