From patchwork Sun Aug 2 14:04:35 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: patch for mkfs.ubifs devtable.c increment in dev_table is wrongly interpreted Date: Sun, 02 Aug 2009 04:04:35 -0000 From: Daniel Neukomm X-Patchwork-Id: 30474 Message-Id: <4A759CF3.2010908@vtxmail.ch> To: linux-mtd@lists.infradead.org patch for mkfs.ubifs devtable.c increment in dev_table is wrongly interpreted with the device table one can add /dev entries to the root file system image. The device table file contains among others the fields minor, start, increment and count. If there is an entry with minor=0 start=0 increment =32 and count=4 the mkfs.ubifs makes 128 device entries, with minor numbers from 0 to 127 The correct version makes 4 entries with minor number 0,32,64,96. /dev/mtd c 640 0 0 90 0 0 2 7 This gives 14 devices /dev/mtdXX instead of 7 devices. Due to this error mtd_debug info /dev/mtd3 delivers the information of /dev/mtd1 instead of. for (i = start; i < num; i++) { @@ -262,7 +262,7 @@ static int interpret_table_entry(const char *line) nh_elt->mode = mode; nh_elt->uid = uid; nh_elt->gid = gid; - nh_elt->dev = makedev(major, minor + i - start); + nh_elt->dev = makedev(major, minor + (i - start)*increment); nm = malloc(len); if (!nm) { diff --git a/mkfs.ubifs/devtable.c b/mkfs.ubifs/devtable.c index 236a6e7..e2d96dc 100644 --- a/mkfs.ubifs/devtable.c +++ b/mkfs.ubifs/devtable.c @@ -248,7 +248,7 @@ static int interpret_table_entry(const char *line) goto out_free; } } else { - int i, num = start + increment * count, len = strlen(name) + 20; + int i, num = start + count, len = strlen(name) + 20; char *nm;