mirror of
https://xff.cz/git/u-boot/
synced 2025-10-26 16:13:55 +01:00
log: fixup log_head after relocating global data
When `gd` is relocated during `spl_relocate_stack_gd()` the doubly-linked circular list in the `log_head` member is broken. The last element of the list should point back to the initial `list_head`, but as the initial `list_head` is moved the pointer becomes stale. As a result the loop in `log_dispatch` would never finish. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
This commit is contained in:
committed by
Tom Rini
parent
657bd30c6b
commit
39162d9348
@@ -688,4 +688,16 @@ static inline int log_get_default_format(void)
|
||||
(IS_ENABLED(CONFIG_LOGF_FUNC) ? BIT(LOGF_FUNC) : 0);
|
||||
}
|
||||
|
||||
struct global_data;
|
||||
/**
|
||||
* log_fixup_for_gd_move() - Handle global_data moving to a new place
|
||||
*
|
||||
* @new_gd: Pointer to the new global data
|
||||
*
|
||||
* The log_head list is part of global_data. Due to the way lists work, moving
|
||||
* the list will cause it to become invalid. This function fixes that up so
|
||||
* that the log_head list will work correctly.
|
||||
*/
|
||||
void log_fixup_for_gd_move(struct global_data *new_gd);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user