fdtgrep: Simplify the alias generation code

We don't need to allocate a new region list when we run out of space.
The outer function can take care of this for us.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
master
Simon Glass 9 years ago committed by Michal Simek
parent 9d8ac956af
commit f403914dfc
  1. 32
      tools/fdtgrep.c

@ -667,28 +667,16 @@ static int fdtgrep_find_regions(const void *fdt,
new_count = fdt_add_alias_regions(fdt, region, count,
max_regions, &state);
if (new_count > max_regions) {
region = malloc(new_count * sizeof(struct fdt_region));
if (!region) {
fprintf(stderr,
"Out of memory for %d regions\n",
count);
return -1;
}
memcpy(region, state.region,
count * sizeof(struct fdt_region));
free(state.region);
new_count = fdt_add_alias_regions(fdt, region, count,
max_regions, &state);
if (new_count <= max_regions) {
/*
* The alias regions will now be at the end of the list.
* Sort the regions by offset to get things into the
* right order
*/
count = new_count;
qsort(region, count, sizeof(struct fdt_region),
h_cmp_region);
}
/*
* The alias regions will now be at the end of the list. Sort
* the regions by offset to get things into the right order
*/
qsort(region, new_count, sizeof(struct fdt_region),
h_cmp_region);
count = new_count;
}
if (ret != -FDT_ERR_NOTFOUND)
@ -805,7 +793,7 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
* The first pass will count the regions, but if it is too many,
* we do another pass to actually record them.
*/
for (i = 0; i < 2; i++) {
for (i = 0; i < 3; i++) {
region = malloc(count * sizeof(struct fdt_region));
if (!region) {
fprintf(stderr, "Out of memory for %d regions\n",

Loading…
Cancel
Save