ubi: some invalid code in the function scan_peb

Ryder Wang rydercoding at hotmail.com
Wed Oct 18 00:28:40 PDT 2023


The patch below can remove the invalid code. It can pass ubi code build and ubi attach can also be OK from the testing.

diff --git a/drivers/mtd/ubi/attach.c b/drivers/mtd/ubi/attach.c
index 10b2459f8951..8268ca6a91d1
--- a/drivers/mtd/ubi/attach.c
+++ b/drivers/mtd/ubi/attach.c
@@ -995,28 +995,6 @@ static int scan_peb(struct ubi_device *ubi, struct ubi_attach_info *ai,
      if (!ec_err) {
            int image_seq;
 
-           /* Make sure UBI version is OK */
-           if (ech->version != UBI_VERSION) {
-                 ubi_err(ubi, "this UBI version is %d, image version is %d",
-                       UBI_VERSION, (int)ech->version);
-                 return -EINVAL;
-           }
-
-           ec = be64_to_cpu(ech->ec);
-           if (ec > UBI_MAX_ERASECOUNTER) {
-                 /*
-                  * Erase counter overflow. The EC headers have 64 bits
-                  * reserved, but we anyway make use of only 31 bit
-                  * values, as this seems to be enough for any existing
-                  * flash. Upgrade UBI and use 64-bit erase counters
-                  * internally.
-                  */
-                 ubi_err(ubi, "erase counter overflow, max is %d",
-                       UBI_MAX_ERASECOUNTER);
-                 ubi_dump_ec_hdr(ech);
-                 return -EINVAL;
-           }
-
            /*
             * Make sure that all PEBs have the same image sequence number.
             * This allows us to detect situations when users flash UBI


From: Zhihao Cheng <chengzhihao1 at huawei.com>
Sent: Wednesday, October 18, 2023 14:31
To: Ryder Wang <rydercoding at hotmail.com>; linux-mtd at lists.infradead.org <linux-mtd at lists.infradead.org>
Subject: Re: ubi: some invalid code in the function scan_peb 
 
在 2023/10/18 13:59, Ryder Wang 写道:
> I just find some dead code in the function scan_peb in drvier/mtd/ubi/attach.c.
> 
> In the function scan_peb, it calls validate_ec_hdr which calls validate_ec_hdr. If ubi version or erase count is incorrect, it will report -EINVAL and abort the function scan_peb. However, ubi version or erase count will be checked again in scan_peb and such check code will never find the errors because such errors should have been detected by validate_ec_hdr (aborting).
> 

Yes, redundant checking indeed exists in scan_peb(), could you send a 
patch to clean it up?


More information about the linux-mtd mailing list