Hello Heiko,

On Sunday, January 25, 2026 at 2:03 PM, Heiko Schocher wrote:
> > Users who enable CONFIG_ENV_WRITEABLE_LIST typically want full control
> > over
> > which environment variables are writable. The new default behavior
> > introduced by your patch might not align with what all users expect or
> > want.
> > 
> > Would overriding the flags using CFG_ENV_FLAGS_LIST_STATIC not work in
> > this
> > case?
> 
> Good question, I have to test... or may Adrian has already done
> such tests...

Please test.

> But looking into code.. if we add this variables in ENV_WRITEABLE_LIST
> the results would be, that this variables are twice in ENV_FLAGS_LIST_STATIC
>
> include/env_flags.h
>   87 #define ENV_FLAGS_LIST_STATIC \
>   88         ETHADDR_FLAGS \
>   89         NET_FLAGS \
>   90         NET6_FLAGS \
>   91         SERIAL_FLAGS \
>   92         CFG_ENV_FLAGS_LIST_STATIC
> 
> once through NET_FLAGS and once through CFG_ENV_FLAGS_LIST_STATIC

Yes, the variables with the flags would be declared twice.
 
> So, that is not good, and I think, code will find the first
> entry, and parse it -> so it will not work.

What leads you to this assumption?

If you examine the code, you'll notice that:
 - The env_attr_lookup() function returns the last entry.
 - When iterating over the flags using env_attr_walk(), any previous attribute
   flags are overridden by subsequent flag declarations.

> Should we instead in case CONFIG_ENV_WRITEABLE_LIST is enabled
> only set/allow CFG_ENV_FLAGS_LIST_STATIC in ENV_FLAGS_LIST_STATIC ?

I haven't tested this myself, as I currently don't have a test environment 
available. Please test it, and if it doesn't work, the correct fix would be to 
ensure that any future flag declaration overrides previous ones.

-- 
Benjamin Robin, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



Reply via email to