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

login
register
mail settings
Submitter Daniel Neukomm
Date Aug. 2, 2009, 2:04 p.m.
Message ID <4A759CF3.2010908@vtxmail.ch>
Download mbox | patch
Permalink /patch/30474/
State New, archived
Headers show

Comments

Daniel Neukomm - Aug. 2, 2009, 2:04 p.m.
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) {
Mike Frysinger - Aug. 3, 2009, 3:48 a.m.
On Sun, Aug 2, 2009 at 10:04, 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.
> diff --git a/mkfs.ubifs/devtable.c b/mkfs.ubifs/devtable.c
> index 236a6e7..e2d96dc 100644

all patches should include signed-off-by tags.  please read the
Documentation/SubmittingPatches file in the linux kernel source code
for some guidelines.
-mike
Artem Bityutskiy - Aug. 10, 2009, 7:36 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. 
> 
> 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;
> 
>                 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) {

Hi,

thanks for the patch. Are you planning to re-send it properly with
no line-wrapping and with signed-off-by?

Patch

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;