mirror of
https://xff.cz/git/u-boot/
synced 2025-09-01 16:52:14 +02:00
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.
This commit is contained in:
1
Makefile
1
Makefile
@@ -219,6 +219,7 @@ LIBS += $(shell if [ -d post/cpu/$(CPU) ]; then echo \
|
|||||||
LIBS += $(shell if [ -d post/board/$(BOARDDIR) ]; then echo \
|
LIBS += $(shell if [ -d post/board/$(BOARDDIR) ]; then echo \
|
||||||
"post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi)
|
"post/board/$(BOARDDIR)/libpost$(BOARD).a"; fi)
|
||||||
LIBS += common/libcommon.a
|
LIBS += common/libcommon.a
|
||||||
|
LIBS += libfdt/libfdt.a
|
||||||
LIBS += $(BOARDLIBS)
|
LIBS += $(BOARDLIBS)
|
||||||
|
|
||||||
LIBS := $(addprefix $(obj),$(LIBS))
|
LIBS := $(addprefix $(obj),$(LIBS))
|
||||||
|
@@ -26,8 +26,3 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
TEXT_BASE = 0xFE000000
|
TEXT_BASE = 0xFE000000
|
||||||
|
|
||||||
#
|
|
||||||
# Additional board-specific libraries
|
|
||||||
#
|
|
||||||
BOARDLIBS = libfdt/libfdt.a
|
|
||||||
|
@@ -56,7 +56,7 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (initrd_start && initrd_end) {
|
if (initrd_start && initrd_end) {
|
||||||
struct fdt_reserve_entry *re;
|
struct fdt_reserve_entry re;
|
||||||
int used;
|
int used;
|
||||||
int total;
|
int total;
|
||||||
int j;
|
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++) {
|
for (j = 0; j < used; j++) {
|
||||||
err = fdt_get_reservemap(fdt, j, &re);
|
err = fdt_get_reservemap(fdt, j, &re);
|
||||||
if (re->address == initrd_start) {
|
if (re.address == initrd_start) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user