Gitweb:
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=78d87c95b89ccf86c142494beada3082810ed368
Commit: 78d87c95b89ccf86c142494beada3082810ed368
Parent: c4e90ec0134d7bedebbe3fe58ed5d431293886d4
Author: Artem Bityutskiy [EMAIL PROTECTED]
AuthorDate: Sat May 5 11:24:02 2007 +0300
Committer: Artem Bityutskiy [EMAIL PROTECTED]
CommitDate: Wed Jul 18 16:52:32 2007 +0300
UBI: fix error path in create_vtbl()
There were several bugs in volume table creation error path. Thanks to
Satyam Sharma [EMAIL PROTECTED] and Florin Malita [EMAIL PROTECTED]
for finding and analysing them: http://lkml.org/lkml/2007/5/3/274
This patch makes ubi_scan_add_to_list() static and renames it to
add_to_list(), just because it is not needed outside scan.c anymore.
Signed-off-by: Artem Bityutskiy [EMAIL PROTECTED]
---
drivers/mtd/ubi/scan.c | 46 +++---
drivers/mtd/ubi/scan.h |2 --
drivers/mtd/ubi/vtbl.c | 14 --
3 files changed, 35 insertions(+), 27 deletions(-)
diff --git a/drivers/mtd/ubi/scan.c b/drivers/mtd/ubi/scan.c
index e445686..30d536e 100644
--- a/drivers/mtd/ubi/scan.c
+++ b/drivers/mtd/ubi/scan.c
@@ -24,7 +24,7 @@
* This unit is responsible for scanning the flash media, checking UBI
* headers and providing complete information about the UBI flash image.
*
- * The scanning information is reoresented by a struct ubi_scan_info' object.
+ * The scanning information is represented by a struct ubi_scan_info' object.
* Information about found volumes is represented by struct ubi_scan_volume
* objects which are kept in volume RB-tree with root at the @volumes field.
* The RB-tree is indexed by the volume ID.
@@ -55,8 +55,19 @@ static int paranoid_check_si(const struct ubi_device *ubi,
static struct ubi_ec_hdr *ech;
static struct ubi_vid_hdr *vidh;
-int ubi_scan_add_to_list(struct ubi_scan_info *si, int pnum, int ec,
-struct list_head *list)
+/*
+ * add_to_list - add physical eraseblock to a list.
+ * @si: scanning information
+ * @pnum: physical eraseblock number to add
+ * @ec: erase counter of the physical eraseblock
+ * @list: the list to add to
+ *
+ * This function adds physical eraseblock @pnum to free, erase, corrupted or
+ * alien lists. Returns zero in case of success and a negative error code in
+ * case of failure.
+ */
+static int add_to_list(struct ubi_scan_info *si, int pnum, int ec,
+ struct list_head *list)
{
struct ubi_scan_leb *seb;
@@ -492,11 +503,11 @@ int ubi_scan_add_used(const struct ubi_device *ubi,
struct ubi_scan_info *si,
return err;
if (cmp_res 4)
- err = ubi_scan_add_to_list(si, seb-pnum,
- seb-ec, si-corr);
+ err = add_to_list(si, seb-pnum, seb-ec,
+ si-corr);
else
- err = ubi_scan_add_to_list(si, seb-pnum,
- seb-ec, si-erase);
+ err = add_to_list(si, seb-pnum, seb-ec,
+ si-erase);
if (err)
return err;
@@ -517,11 +528,9 @@ int ubi_scan_add_used(const struct ubi_device *ubi, struct
ubi_scan_info *si,
* previously.
*/
if (cmp_res 4)
- return ubi_scan_add_to_list(si, pnum, ec,
- si-corr);
+ return add_to_list(si, pnum, ec, si-corr);
else
- return ubi_scan_add_to_list(si, pnum, ec,
- si-erase);
+ return add_to_list(si, pnum, ec, si-erase);
}
}
@@ -754,7 +763,7 @@ struct ubi_scan_leb *ubi_scan_get_free_peb(const struct
ubi_device *ubi,
* @si: scanning information
* @pnum: the physical eraseblock number
*
- * This function returns a zero if the physical eraseblock was succesfully
+ * This function returns a zero if the physical eraseblock was successfully
* handled and a negative error code in case of failure.
*/
static int process_eb(struct ubi_device *ubi, struct ubi_scan_info *si, int
pnum)
@@ -783,8 +792,7 @@ static int process_eb(struct ubi_device *ubi, struct
ubi_scan_info *si, int pnum
else if (err == UBI_IO_BITFLIPS)
bitflips = 1;
else if (err == UBI_IO_PEB_EMPTY)
- return ubi_scan_add_to_list(si, pnum, UBI_SCAN_UNKNOWN_EC,
- si-erase