• Zhihao Cheng's avatar
    ubi: Fix failure attaching when vid_hdr offset equals to (sub)page size · 1e020e1b
    Zhihao Cheng authored
    Following process will make ubi attaching failed since commit
    1b42b1a3 ("ubi: ensure that VID header offset ... size"):
    
    ID="0xec,0xa1,0x00,0x15" # 128M 128KB 2KB
    modprobe nandsim id_bytes=$ID
    flash_eraseall /dev/mtd0
    modprobe ubi mtd="0,2048"  # set vid_hdr offset as 2048 (one page)
    (dmesg):
      ubi0 error: ubi_attach_mtd_dev [ubi]: VID header offset 2048 too large.
      UBI error: cannot attach mtd0
      UBI error: cannot initialize UBI, error -22
    
    Rework original solution, the key point is making sure
    'vid_hdr_shift + UBI_VID_HDR_SIZE < ubi->vid_hdr_alsize',
    so we should check vid_hdr_shift rather not vid_hdr_offset.
    Then, ubi still support (sub)page aligined VID header offset.
    
    Fixes: 1b42b1a3 ("ubi: ensure that VID header offset ... size")
    Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
    Tested-by: default avatarNicolas Schichan <nschichan@freebox.fr>
    Tested-by: Miquel Raynal <miquel.raynal@bootlin.com> # v5.10, v4.19
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    1e020e1b
build.c 43.9 KB