uboot-layerscape: Don't fixup kaslr seed when no node
[openwrt/openwrt.git] / package / boot / uboot-layerscape / patches / 0003-avoid-calling-sec-firmware-get-random-when-no-kaslr-seed.patch
diff --git a/package/boot/uboot-layerscape/patches/0003-avoid-calling-sec-firmware-get-random-when-no-kaslr-seed.patch b/package/boot/uboot-layerscape/patches/0003-avoid-calling-sec-firmware-get-random-when-no-kaslr-seed.patch
new file mode 100644 (file)
index 0000000..681ec90
--- /dev/null
@@ -0,0 +1,33 @@
+Index: uboot-layerscape-lf-6.1.1-1.0.0/arch/arm/cpu/armv8/sec_firmware.c
+===================================================================
+--- uboot-layerscape-lf-6.1.1-1.0.0.orig/arch/arm/cpu/armv8/sec_firmware.c
++++ uboot-layerscape-lf-6.1.1-1.0.0/arch/arm/cpu/armv8/sec_firmware.c
+@@ -473,12 +473,6 @@ int fdt_fixup_kaslr(void *fdt)
+               return 0;
+       }
+-      ret = sec_firmware_get_random(rand, 8);
+-      if (ret < 0) {
+-              printf("WARNING: No random number to set kaslr-seed\n");
+-              return 0;
+-      }
+-
+       err = fdt_check_header(fdt);
+       if (err < 0) {
+               printf("fdt_chosen: %s\n", fdt_strerror(err));
+@@ -490,6 +484,15 @@ int fdt_fixup_kaslr(void *fdt)
+       if (nodeoffset < 0)
+               return 0;
++      if (fdt_find_or_add_subnode(fdt, nodeoffset, "kaslr-seed"))
++              return 0;
++
++      ret = sec_firmware_get_random(rand, 8);
++      if (ret < 0) {
++              printf("WARNING: No random number to set kaslr-seed\n");
++              return 0;
++      }
++
+       err = fdt_setprop(fdt, nodeoffset, "kaslr-seed", rand,
+                                 sizeof(rand));
+       if (err < 0) {