Commit f403914d authored by Simon Glass's avatar Simon Glass Committed by Michal Simek

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: default avatarSimon Glass <sjg@chromium.org>
Signed-off-by: default avatarMichal Simek <michal.simek@xilinx.com>
parent 9d8ac956
......@@ -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",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment