Patchwork patch for mkfs.ubifs devtable.c increment in dev_table is wrongly interpreted

login
register
mail settings
Submitter Artem Bityutskiy
Date Aug. 11, 2009, 6:45 a.m.
Message ID <1249973154.19638.30.camel@localhost>
Download mbox | patch
Permalink /patch/31123/
State Accepted
Commit 6eba06c395f72e43505b21f073275bd071782552
Headers show

Comments

Artem Bityutskiy - Aug. 11, 2009, 6:45 a.m.
On Sun, 2009-08-02 at 16:04 +0200, Daniel Neukomm wrote:
> 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. 

Ok, below is how you was supposed to send the patch (without my
Signed-off-by, of course). I just applied your patch manually (usually
we use git am for this) and tweaked it.

Please, check that I did not do any mistake. After you have confirmed
this, I'll push this to the mtd-utils repository.

From: Daniel Neukomm <Neukomm@vtxmail.ch>
Subject: [PATCH] mkfs.ubifs: correct devtable increment handling

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.

Signed-off-by: Daniel Neukomm <Neukomm@vtxmail.ch>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
---
 mkfs.ubifs/devtable.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
Artem Bityutskiy - Aug. 11, 2009, 11:21 a.m.
On 08/11/2009 09:45 AM, Artem Bityutskiy wrote:
> On Sun, 2009-08-02 at 16:04 +0200, Daniel Neukomm wrote:
>> 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.
>
> Ok, below is how you was supposed to send the patch (without my
> Signed-off-by, of course). I just applied your patch manually (usually
> we use git am for this) and tweaked it.
>
> Please, check that I did not do any mistake. After you have confirmed
> this, I'll push this to the mtd-utils repository.

I've pushed it actually to mtd-utils.git. But please, check it anyway.
Daniel Neukomm - Aug. 12, 2009, 6:27 p.m.
Artem Bityutskiy schrieb:
> On 08/11/2009 09:45 AM, Artem Bityutskiy wrote:
>> On Sun, 2009-08-02 at 16:04 +0200, Daniel Neukomm wrote:
>>> 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.
>>
>> Ok, below is how you was supposed to send the patch (without my
>> Signed-off-by, of course). I just applied your patch manually (usually
>> we use git am for this) and tweaked it.
>>
>> Please, check that I did not do any mistake. After you have confirmed
>> this, I'll push this to the mtd-utils repository.
>
> I've pushed it actually to mtd-utils.git. But please, check it anyway.
>
The new patch (without line-wrapping) works.
The actual trunk version from mtd-utils repository contains the intented 
corrections.

Patch

diff --git a/mkfs.ubifs/devtable.c b/mkfs.ubifs/devtable.c
index 236a6e7..dee035d 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;
 
 		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) {