diff options
author | Gerald Van Baren <vanbaren@cideas.com> | 2007-04-19 23:14:39 -0400 |
---|---|---|
committer | Gerald Van Baren <vanbaren@cideas.com> | 2007-04-19 23:14:39 -0400 |
commit | 7651f8bdbba03bb0b4f241e2d2c4cb65b230bd56 (patch) | |
tree | 32e427d198d369aec66173f3a015cd71a6ab1b5b | |
parent | 37837828d89084879bee2f2b8c7c68d4695940df (diff) | |
download | bootable_bootloader_goldelico_gta04-7651f8bdbba03bb0b4f241e2d2c4cb65b230bd56.zip bootable_bootloader_goldelico_gta04-7651f8bdbba03bb0b4f241e2d2c4cb65b230bd56.tar.gz bootable_bootloader_goldelico_gta04-7651f8bdbba03bb0b4f241e2d2c4cb65b230bd56.tar.bz2 |
Fix serious pointer bug with bootm and reserve map.
What was suppose to be a stack variable was declared as a pointer,
overwriting random memory.
Also moved the libfdt.a requirement into the main Makefile. That is
The U-Boot Way.
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | board/mpc8360emds/config.mk | 5 | ||||
-rw-r--r-- | common/fdt_support.c | 4 |
3 files changed, 3 insertions, 7 deletions
@@ -219,6 +219,7 @@ LIBS += $(shell if [ -d post/cpu/$(CPU) ]; then echo \ LIBS += $(shell if [ -d post/board/$(BOARDDIR) ]; then echo \ "post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi) LIBS += common/libcommon.a +LIBS += libfdt/libfdt.a LIBS += $(BOARDLIBS) LIBS := $(addprefix $(obj),$(LIBS)) diff --git a/board/mpc8360emds/config.mk b/board/mpc8360emds/config.mk index 5801a5f..9ace886 100644 --- a/board/mpc8360emds/config.mk +++ b/board/mpc8360emds/config.mk @@ -26,8 +26,3 @@ # TEXT_BASE = 0xFE000000 - -# -# Additional board-specific libraries -# -BOARDLIBS = libfdt/libfdt.a diff --git a/common/fdt_support.c b/common/fdt_support.c index 91b729f..69099c4 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -56,7 +56,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force) } if (initrd_start && initrd_end) { - struct fdt_reserve_entry *re; + struct fdt_reserve_entry re; int used; int total; int j; @@ -77,7 +77,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force) */ for (j = 0; j < used; j++) { err = fdt_get_reservemap(fdt, j, &re); - if (re->address == initrd_start) { + if (re.address == initrd_start) { break; } } |