|
@@ -269,18 +269,14 @@ int setup_new_fdt(const struct kimage *image, void *fdt,
|
|
|
ret = fdt_setprop_u64(fdt, chosen_node,
|
|
|
"linux,initrd-start",
|
|
|
initrd_load_addr);
|
|
|
- if (ret < 0) {
|
|
|
- pr_err("Error setting up the new device tree.\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ if (ret < 0)
|
|
|
+ goto err;
|
|
|
|
|
|
/* initrd-end is the first address after the initrd image. */
|
|
|
ret = fdt_setprop_u64(fdt, chosen_node, "linux,initrd-end",
|
|
|
initrd_load_addr + initrd_len);
|
|
|
- if (ret < 0) {
|
|
|
- pr_err("Error setting up the new device tree.\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ if (ret < 0)
|
|
|
+ goto err;
|
|
|
|
|
|
ret = fdt_add_mem_rsv(fdt, initrd_load_addr, initrd_len);
|
|
|
if (ret) {
|
|
@@ -292,10 +288,8 @@ int setup_new_fdt(const struct kimage *image, void *fdt,
|
|
|
|
|
|
if (cmdline != NULL) {
|
|
|
ret = fdt_setprop_string(fdt, chosen_node, "bootargs", cmdline);
|
|
|
- if (ret < 0) {
|
|
|
- pr_err("Error setting up the new device tree.\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ if (ret < 0)
|
|
|
+ goto err;
|
|
|
} else {
|
|
|
ret = fdt_delprop(fdt, chosen_node, "bootargs");
|
|
|
if (ret && ret != -FDT_ERR_NOTFOUND) {
|
|
@@ -311,10 +305,12 @@ int setup_new_fdt(const struct kimage *image, void *fdt,
|
|
|
}
|
|
|
|
|
|
ret = fdt_setprop(fdt, chosen_node, "linux,booted-from-kexec", NULL, 0);
|
|
|
- if (ret) {
|
|
|
- pr_err("Error setting up the new device tree.\n");
|
|
|
- return -EINVAL;
|
|
|
- }
|
|
|
+ if (ret)
|
|
|
+ goto err;
|
|
|
|
|
|
return 0;
|
|
|
+
|
|
|
+err:
|
|
|
+ pr_err("Error setting up the new device tree.\n");
|
|
|
+ return -EINVAL;
|
|
|
}
|