ubi: Only read necessary size when reading the VID header
authorSascha Hauer <s.hauer@pengutronix.de>
Tue, 28 Jun 2016 11:51:07 +0000 (13:51 +0200)
committerRichard Weinberger <richard@nod.at>
Fri, 29 Jul 2016 21:29:44 +0000 (23:29 +0200)
When reading the vid hdr from the device UBI always reads a whole
page. Instead, read only the data we actually need and speed up
attachment of UBI devices by potentially making use of reading
subpages if the NAND driver supports it.

Since the VID header may be at offset vid_hdr_shift in the page and
we can only read from the beginning of a page we have to add that
offset to the read size.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Richard Weinberger <richard@nod.at>
drivers/mtd/ubi/io.c

index 10cf3b549959ce46f9c517b77fbcdd84e274a3d2..ff8cafe1e5cd1f1489ef41745f21f6c1110b61c5 100644 (file)
@@ -1019,7 +1019,7 @@ int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum,
 
        p = (char *)vid_hdr - ubi->vid_hdr_shift;
        read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
-                         ubi->vid_hdr_alsize);
+                         ubi->vid_hdr_shift + UBI_VID_HDR_SIZE);
        if (read_err && read_err != UBI_IO_BITFLIPS && !mtd_is_eccerr(read_err))
                return read_err;