const u32 *image_offset_be, *image_len_be, *image_pos_be;
int ret = 1, node, images, config;
const char *image_name, *image_type, *image_description, *config_default,
- *config_description, *config_loadables;
+ *config_description, *config_loadables, *bootconf_c;
int image_name_len, image_type_len, image_description_len, config_default_len,
- config_description_len, config_loadables_len;
+ config_description_len, config_loadables_len, bootconf_len;
sector_t start_sect, nr_sects;
size_t label_min;
struct device_node *np = NULL;
- const char *bootconf;
+ char *bootconf = NULL, *bootconf_term;
const char *loadable;
const char *select_rootfs = NULL;
bool found;
return -ENOMEM;
np = of_find_node_by_path("/chosen");
- if (np)
- bootconf = of_get_property(np, "u-boot,bootconf", NULL);
- else
- bootconf = NULL;
+ if (np) {
+ bootconf_c = of_get_property(np, "u-boot,bootconf", &bootconf_len);
+ if (bootconf_c && bootconf_len)
+ bootconf = kmemdup_nul(bootconf_c, bootconf_len, GFP_KERNEL);
+ }
+
+ if (bootconf) {
+ bootconf_term = strchr(bootconf, '#');
+ if (bootconf_term)
+ *bootconf_term = '\0';
+ }
config = fdt_path_offset(fit, FIT_CONFS_PATH);
if (config < 0) {
strlcat(state->pp_buf, tmp, PAGE_SIZE);
}
ret_out:
+ kfree(bootconf);
kfree(fit);
return ret;
}