#include <asm/byteorder.h>
 
 /* relevant device tree properties */
-#define FDT_PSTR_INITRD_STA    "linux,initrd-start"
-#define FDT_PSTR_INITRD_END    "linux,initrd-end"
-#define FDT_PSTR_BOOTARGS      "bootargs"
-#define FDT_PSTR_KASLR_SEED    "kaslr-seed"
+#define FDT_PROP_INITRD_START  "linux,initrd-start"
+#define FDT_PROP_INITRD_END    "linux,initrd-end"
+#define FDT_PROP_BOOTARGS      "bootargs"
+#define FDT_PROP_KASLR_SEED    "kaslr-seed"
 
 const struct kexec_file_ops * const kexec_file_loaders[] = {
        &kexec_image_ops,
                     unsigned long initrd_load_addr, unsigned long initrd_len,
                     char *cmdline, void *dtb)
 {
-       int nodeoffset;
-       int ret;
+       int off, ret;
+
+       ret = fdt_path_offset(dtb, "/chosen");
+       if (ret < 0)
+               goto out;
 
-       nodeoffset = fdt_path_offset(dtb, "/chosen");
-       if (nodeoffset < 0)
-               return -EINVAL;
+       off = ret;
 
        /* add bootargs */
        if (cmdline) {
-               ret = fdt_setprop_string(dtb, nodeoffset, FDT_PSTR_BOOTARGS,
-                                                       cmdline);
+               ret = fdt_setprop_string(dtb, off, FDT_PROP_BOOTARGS, cmdline);
                if (ret)
-                       return (ret == -FDT_ERR_NOSPACE ? -ENOMEM : -EINVAL);
+                       goto out;
        } else {
-               ret = fdt_delprop(dtb, nodeoffset, FDT_PSTR_BOOTARGS);
+               ret = fdt_delprop(dtb, off, FDT_PROP_BOOTARGS);
                if (ret && (ret != -FDT_ERR_NOTFOUND))
-                       return -EINVAL;
+                       goto out;
        }
 
        /* add initrd-* */
        if (initrd_load_addr) {
-               ret = fdt_setprop_u64(dtb, nodeoffset, FDT_PSTR_INITRD_STA,
-                                                       initrd_load_addr);
+               ret = fdt_setprop_u64(dtb, off, FDT_PROP_INITRD_START,
+                                     initrd_load_addr);
                if (ret)
-                       return (ret == -FDT_ERR_NOSPACE ? -ENOMEM : -EINVAL);
+                       goto out;
 
-               ret = fdt_setprop_u64(dtb, nodeoffset, FDT_PSTR_INITRD_END,
-                                               initrd_load_addr + initrd_len);
+               ret = fdt_setprop_u64(dtb, off, FDT_PROP_INITRD_END,
+                                     initrd_load_addr + initrd_len);
                if (ret)
-                       return (ret == -FDT_ERR_NOSPACE ? -ENOMEM : -EINVAL);
+                       goto out;
        } else {
-               ret = fdt_delprop(dtb, nodeoffset, FDT_PSTR_INITRD_STA);
+               ret = fdt_delprop(dtb, off, FDT_PROP_INITRD_START);
                if (ret && (ret != -FDT_ERR_NOTFOUND))
-                       return -EINVAL;
+                       goto out;
 
-               ret = fdt_delprop(dtb, nodeoffset, FDT_PSTR_INITRD_END);
+               ret = fdt_delprop(dtb, off, FDT_PROP_INITRD_END);
                if (ret && (ret != -FDT_ERR_NOTFOUND))
-                       return -EINVAL;
+                       goto out;
        }
 
        /* add kaslr-seed */
-       ret = fdt_delprop(dtb, nodeoffset, FDT_PSTR_KASLR_SEED);
+       ret = fdt_delprop(dtb, off, FDT_PROP_KASLR_SEED);
        if (ret && (ret != -FDT_ERR_NOTFOUND))
-               return -EINVAL;
+               goto out;
 
        if (rng_is_initialized()) {
-               u64 r = get_random_u64();
-               ret = fdt_setprop_u64(dtb, nodeoffset, FDT_PSTR_KASLR_SEED, r);
+               u64 seed = get_random_u64();
+               ret = fdt_setprop_u64(dtb, off, FDT_PROP_KASLR_SEED, seed);
                if (ret)
-                       return (ret == -FDT_ERR_NOSPACE ? -ENOMEM : -EINVAL);
+                       goto out;
        } else {
                pr_notice("RNG is not initialised: omitting \"%s\" property\n",
-                               FDT_PSTR_KASLR_SEED);
+                               FDT_PROP_KASLR_SEED);
        }
 
+out:
+       if (ret)
+               return (ret == -FDT_ERR_NOSPACE) ? -ENOMEM : -EINVAL;
+
        return 0;
 }