aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot/libfdt-wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/boot/libfdt-wrapper.c')
-rw-r--r--arch/powerpc/boot/libfdt-wrapper.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/arch/powerpc/boot/libfdt-wrapper.c b/arch/powerpc/boot/libfdt-wrapper.c
index c541fd8a95d4..1daa73f08ba8 100644
--- a/arch/powerpc/boot/libfdt-wrapper.c
+++ b/arch/powerpc/boot/libfdt-wrapper.c
@@ -165,6 +165,7 @@ static unsigned long fdt_wrapper_finalize(void)
165void fdt_init(void *blob) 165void fdt_init(void *blob)
166{ 166{
167 int err; 167 int err;
168 int bufsize;
168 169
169 dt_ops.finddevice = fdt_wrapper_finddevice; 170 dt_ops.finddevice = fdt_wrapper_finddevice;
170 dt_ops.getprop = fdt_wrapper_getprop; 171 dt_ops.getprop = fdt_wrapper_getprop;
@@ -178,16 +179,15 @@ void fdt_init(void *blob)
178 179
179 /* Make sure the dt blob is the right version and so forth */ 180 /* Make sure the dt blob is the right version and so forth */
180 fdt = blob; 181 fdt = blob;
181 err = fdt_open_into(fdt, fdt, fdt_totalsize(blob)); 182 bufsize = fdt_totalsize(fdt) + 4;
182 if (err == -FDT_ERR_NOSPACE) { 183 buf = malloc(bufsize);
183 int bufsize = fdt_totalsize(fdt) + 4; 184 if(!buf)
184 buf = malloc(bufsize); 185 fatal("malloc failed. can't relocate the device tree\n\r");
185 err = fdt_open_into(fdt, buf, bufsize); 186
186 } 187 err = fdt_open_into(fdt, buf, bufsize);
187 188
188 if (err != 0) 189 if (err != 0)
189 fatal("fdt_init(): %s\n\r", fdt_strerror(err)); 190 fatal("fdt_init(): %s\n\r", fdt_strerror(err));
190 191
191 if (buf) 192 fdt = buf;
192 fdt = buf;
193} 193}