[PATCH 1/1] Fix segfault in DTC
Markus Mayer
mmayer at broadcom.com
Wed Sep 26 09:51:47 EST 2012
On 25/09/2012 16:30, David Gibson wrote:
> On Tue, Sep 25, 2012 at 10:58:09AM -0700, Markus Mayer wrote:
>> Prior to this change, an empty input file would cause a segfault, because
>> yylloc had never been initialized. There was never any characters for the
>> lexer to match, so YY_USER_ACTION was never executed before the parse error
>> was detected.
>>
>> When the parser printed the error message, it tried to include the name of
>> the file, but the structure holding the file name (yylloc.file, referenced
>> as pos->file) had never been initialized.
>>
>> Without the fix:
>>
>> $ ./dtc /dev/null
>> DTC: dts->dts on file "/dev/null"
>> Segmentation fault (core dumped)
>>
>> $ gdb dtc core
>> Program terminated with signal 11, Segmentation fault.
>> at scripts/dtc/srcpos.c:194
>> 194 fname = pos->file->name;
>> (gdb) bt
>> at scripts/dtc/srcpos.c:194
>> fmt=0x40d769 "%s", va=0x7fffbf027148) at scripts/dtc/srcpos.c:220
>> at scripts/dtc/dtc-parser.tab.c:1920
>> at scripts/dtc/treesource.c:38
>> at scripts/dtc/dtc.c:203
>> (gdb) p *pos
>> $1 = {first_line = 0, first_column = 0, last_line = 0, last_column = 0,
>> file = 0x0}
>
> Which dtc version did you observe this with? I'm unable to reproduce
> the SEGV with current git.
That was
$ cat version_gen.h
#define DTC_VERSION "DTC 1.2.0-g37c0b6a0"
from git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git.
In other words, the DTC used by the Linux 3.6-rc series.
Regards,
-Markus
More information about the devicetree-discuss
mailing list