]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/powerpc/boot/libfdt-wrapper.c
powerpc/boot: Compare _start against ei.loadsize instead ei.memsize
[linux-2.6-omap-h63xx.git] / arch / powerpc / boot / libfdt-wrapper.c
index c541fd8a95d4966369aa79fbc3557122fd7a36d8..1daa73f08ba8bf3c425dab7906c7741e20303acc 100644 (file)
@@ -165,6 +165,7 @@ static unsigned long fdt_wrapper_finalize(void)
 void fdt_init(void *blob)
 {
        int err;
+       int bufsize;
 
        dt_ops.finddevice = fdt_wrapper_finddevice;
        dt_ops.getprop = fdt_wrapper_getprop;
@@ -178,16 +179,15 @@ void fdt_init(void *blob)
 
        /* Make sure the dt blob is the right version and so forth */
        fdt = blob;
-       err = fdt_open_into(fdt, fdt, fdt_totalsize(blob));
-       if (err == -FDT_ERR_NOSPACE) {
-               int bufsize = fdt_totalsize(fdt) + 4;
-               buf = malloc(bufsize);
-               err = fdt_open_into(fdt, buf, bufsize);
-       }
+       bufsize = fdt_totalsize(fdt) + 4;
+       buf = malloc(bufsize);
+       if(!buf)
+               fatal("malloc failed. can't relocate the device tree\n\r");
+
+       err = fdt_open_into(fdt, buf, bufsize);
 
        if (err != 0)
                fatal("fdt_init(): %s\n\r", fdt_strerror(err));
 
-       if (buf)
-               fdt = buf;
+       fdt = buf;
 }