lib: hashtable: Prevent recursive calling of callback functions
authorChristoph Niedermaier <cniedermaier@dh-electronics.com>
Fri, 6 Dec 2024 23:04:19 +0000 (00:04 +0100)
committerFabio Estevam <festevam@gmail.com>
Sat, 7 Dec 2024 12:07:45 +0000 (09:07 -0300)
commit86f58ea539e35b47235dff0dd77ec20fe8894469
tree80caf2023734b0baeac12803e3f95052abeaa1b6
parent489b965564ad73c7a2e8f8743908347775c5df3b
lib: hashtable: Prevent recursive calling of callback functions

In case there are two variables which each implement env callback
that performs env_set() on the other variable, the callbacks will
call each other recursively until the stack runs out. Prevent such
a recursion from happening.

Example which triggers this behavior:
static int on_foo(...) { env_set("bar", 0); ... }
static int on_bar(...) { env_set("foo", 0); ... }
U_BOOT_ENV_CALLBACK(foo, on_foo);
U_BOOT_ENV_CALLBACK(bar, on_bar);

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Suggested-by: Marek Vasut <marex@denx.de>
lib/hashtable.c