[U-Boot] [PATCH] tools: env: handle corrupted ubi volumes during sanity check

Wolfgang Denk wd at denx.de
Thu Jan 30 21:46:40 CET 2020


Dear Martin,

In message <20191112190223.225956-1-martin at geanix.com> you wrote:
> A partially written ubi volume is marked as such by the kernel. Such a
> mark causes the initial ubi sanity check to fail instead of falling back
> to the redundant environment.
> 
> Fix this by special casing the EBADF return code from the UBI_IOCEBISMAP
> ioctl, as this is only ever returned in case of a partially written
> volume. The CRC checking will decide which environment to use anyways.

I dislike this approach, sorry.

> Signed-off-by: Martin Hundebøll <martin at geanix.com>
> ---
>  tools/env/fw_env.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
> index cfada0ee11..f7904ae036 100644
> --- a/tools/env/fw_env.c
> +++ b/tools/env/fw_env.c
> @@ -1608,7 +1608,13 @@ static int check_device_config(int dev)
>  
>  	if (IS_UBI(dev)) {
>  		rc = ioctl(fd, UBI_IOCEBISMAP, &lnum);
> -		if (rc < 0) {
> +		if (rc < 0 && errno == EBADF) {
> +			/* EBADF here means we are dealing with a partially
> +			 * written UBI volume, Leave it for now to allow the
> +			 * use of the redundant env. CRC checking will decide
> +			 * which to use */
> +			rc = 0;

No, we have an error here, so we should report that error to the
user at least.  Saying "oh, this error is not an error" is wrong.

Think especially of the case when there is no redundant environment
at all!

If you want to drop through to trying to read the other copy of the
enviropnment (if there is one !!!) this needs to be implemented
differently.

Naked-by: Wolfgang Denk <wd at denx.de>


Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
There's an old proverb that says just about whatever you want it to.


More information about the U-Boot mailing list