[PATCH] env: Make _init() expect _INVALID when _IS_NOWHERE

Tom Rini trini at konsulko.com
Fri Sep 24 13:41:00 CEST 2021


On Fri, Sep 24, 2021 at 05:04:27AM +0200, Marek Vasut wrote:
> On 9/24/21 4:40 AM, Tom Rini wrote:
> > On Thu, Aug 12, 2021 at 03:28:31PM +0000, Pierre-Clément Tosi wrote:
> > 
> > > Avoid applying the "fix" introduced by commit 5557eec01cbf ("env: Fix
> > > invalid env handling in env_init()") to the environment "nowhere".
> > > 
> > > This is necessary as that commit, by setting the return value of
> > > env_init() to -ENOENT if gd->env_valid is ENV_INVALID, forces that
> > > function to reset gd->env_valid to ENV_VALID. By doing so, it breaks the
> > > assumption (required by ENV_IS_NOWHERE) that gd->env_valid must be
> > > ENV_INVALID.
> > > 
> > > This, in turn, results in env_relocate() calling env_load() (it should
> > > not), which itself, calls U_BOOT_ENV_LOCATION(nowhere).load() i.e.
> > > env_nowhere_load(). That function, being implemented under the
> > > assumption mentioned above, calls env_set_default(), which in turn,
> > > seeing that gd->env_valid is ENV_VALID (it should not), tries to
> > > dereference whatever lies in gd->env_addr (most likely garbage), leading
> > > to a faulty memory access.
> > > 
> > > Note that other env_locations might be concerned by this bug but that
> > > this commit only intends to fix it for when ENV_IS_NOWHERE.
> > > 
> > > Fixes: 5557eec01cbf ("env: Fix invalid env handling in env_init()")
> > > Signed-off-by: Pierre-Clément Tosi <ptosi at google.com>
> > 
> > Applied to u-boot/next, thanks!
> 
> Please drop this, quote from my previous reply to this patch:
> 
> "
> Such patch was already posted, see the patch and the discussion, in the end
> there was a different fix for the relocation code:
> 
> https://patchwork.ozlabs.org/project/uboot/patch/1620828554-24013-1-git-send-email-hayashi.kunihiko@socionext.com/
> "

I'll drop this.  FWIW, my reading of the previous patch, and then this
being posted afterwards is why I had applied this patch.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20210924/644c0a08/attachment.sig>


More information about the U-Boot mailing list