Re: [PATCH v2] treesource: When using a dummy marker, replace the existing ones

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Wed, Oct 3, 2018 at 1:25 PM Lubomir Rintel <lkundrak@xxxxx> wrote:
>
> On Wed, 2018-10-03 at 11:08 -0500, Rob Herring wrote:
> > On Wed, Oct 3, 2018 at 8:22 AM Lubomir Rintel <lkundrak@xxxxx> wrote:
> > > If none of the markers bears type information we can't just prepend a new
> > > one. Otherwise two subsequent markers will begin at offset 0, blowing up
> > > the chunk_len calculation a few lines after.
> > >
> > > A particular case where this causes havoc is a string property in a tree
> > > generated from "fs" input. A string property ends up with a TYPE_NULL
> >
> > You mean TYPE_NONE?
>
> Yes.
>
> > > marker. Upon output, in write_propval(), we correctly guess it looks
> > > like a TYPE_STRING. With the dummy marker prepended, We'd and up with two
> > > markers:
> > >
> > >   { type = TYPE_STRING, offset = 0 }
> > >   { type = TYPE_NONE, offset = 0 }
> > >
> > > The chunk_len for the fist marker will end up being calculated as 0.
> > > This blows up later on because a zero-length string should never happen
> > > because it lacks the terminating \0 (valgrind catches this).
> >
> > I'm slightly confused as to when this is broken. This sounds like the
> > output from fs input is completely broken for all strings, but I don't
> > think that is true given we've had reports of only minor issues.
>
> Yes, it's indeed broken for all strings. On my system:
>
> $ ./dtc -I fs -O dts tests/fs/test_tree1 |grep '"'
>   compatible = """test_tree1";
>   prop-str = """hello world";
>       compatible = """subsubnode2\0subsubnode";
>     compatible = """subnode1";
>       compatible = """subsubnode1\0subsubnode";
>       placeholder = """this is a placeholder string\0string2";
>
> Note the extra "". But also:

Ah, the extra "" should be fixed with the patch I mentioned. I guess
TYPE_NONE is the same as REF_PATH combined with TYPE_STRING.

> $ valgrind ./dtc -I fs -O dts tests/fs/test_tree1 |grep '"'

And valgrind passes for me with the patch.

Rob



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux