UBI: compatible fallback in absense of sequence numbers

Fall back onto thinking everything's OK if either of the sequence
numbers we are asked to compare is zero, which is what was used
before sequence numbers were introduced.

[ Artem: modified the patch to be applicable to upstream UBI, added
big comment ]

Signed-off-by: Adrian Hunter <ext-adrian.hunter@nokia.com>
Signed-off-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>

authored by Adrian Hunter and committed by Artem Bityutskiy 32bc4820 7194e6f9

+12 -1
+12 -1
drivers/mtd/ubi/scan.c
··· 781 781 return -EINVAL; 782 782 } 783 783 784 + /* 785 + * Make sure that all PEBs have the same image sequence number. 786 + * This allows us to detect situations when users flash UBI 787 + * images incorrectly, so that the flash has the new UBI image 788 + * and leftovers from the old one. This feature was added 789 + * relatively recently, and the sequence number was always 790 + * zero, because old UBI implementations always set it to zero. 791 + * For this reasons, we do not panic if some PEBs have zero 792 + * sequence number, while other PEBs have non-zero sequence 793 + * number. 794 + */ 784 795 image_seq = be32_to_cpu(ech->image_seq); 785 796 if (!si->image_seq_set) { 786 797 ubi->image_seq = image_seq; 787 798 si->image_seq_set = 1; 788 - } else if (ubi->image_seq != image_seq) { 799 + } else if (ubi->image_seq && ubi->image_seq != image_seq) { 789 800 ubi_err("bad image sequence number %d in PEB %d, " 790 801 "expected %d", image_seq, pnum, ubi->image_seq); 791 802 ubi_dbg_dump_ec_hdr(ech);