aboutsummaryrefslogtreecommitdiff
path: root/board/xilinx/zynq/board.c
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2019-04-03 09:12:48 +0200
committerTom Rini <trini@konsulko.com>2019-04-08 09:21:39 -0400
commitccd063e9812a2bdcbeafbbcd8dcb062bfc290f24 (patch)
tree3aa26119f289517fddfc0387279e400938b384d1 /board/xilinx/zynq/board.c
parentafbc31948a007e03d6a1282677aafc2208f45819 (diff)
downloadu-boot-ccd063e9812a2bdcbeafbbcd8dcb062bfc290f24.zip
u-boot-ccd063e9812a2bdcbeafbbcd8dcb062bfc290f24.tar.gz
u-boot-ccd063e9812a2bdcbeafbbcd8dcb062bfc290f24.tar.bz2
watchdog: Move watchdog_dev to data section (BSS may not be cleared)
This patch moves all instances of static "watchdog_dev" declarations to the "data" section. This may be needed, as the BSS may not be cleared in the early U-Boot phase, where watchdog_reset() is already beeing called. This may result in incorrect pointer access, as the check to "!watchdog_dev" in watchdog_reset() may not be true and the function may continue to run. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Heiko Schocher <hs@denx.de> Cc: Tom Rini <trini@konsulko.com> Cc: Michal Simek <michal.simek@xilinx.com> Cc: "Marek BehĂșn" <marek.behun@nic.cz> Cc: Daniel Schwierzeck <daniel.schwierzeck@gmail.com> Tested-by: Michal Simek <michal.simek@xilinx.com> (on zcu100) Reviewed-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'board/xilinx/zynq/board.c')
-rw-r--r--board/xilinx/zynq/board.c7
1 files changed, 1 insertions, 6 deletions
diff --git a/board/xilinx/zynq/board.c b/board/xilinx/zynq/board.c
index b4b84df..ea26aad 100644
--- a/board/xilinx/zynq/board.c
+++ b/board/xilinx/zynq/board.c
@@ -19,17 +19,12 @@
DECLARE_GLOBAL_DATA_PTR;
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT)
-static struct udevice *watchdog_dev;
+static struct udevice *watchdog_dev __attribute__((section(".data"))) = NULL;
#endif
#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_BOARD_EARLY_INIT_F)
int board_early_init_f(void)
{
-# if defined(CONFIG_WDT)
- /* bss is not cleared at time when watchdog_reset() is called */
- watchdog_dev = NULL;
-# endif
-
return 0;
}
#endif