diff options
Diffstat (limited to 'arch/powerpc/boot/libfdt-wrapper.c')
-rw-r--r-- | arch/powerpc/boot/libfdt-wrapper.c | 16 |
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) | |||
165 | void fdt_init(void *blob) | 165 | void 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 | } |