If we have a phandle in the middle of a sequence of numbers and it is not bracketed (e.g. <0x1234 &phandle 0x5678>), the dts output will be corrupted due to missing a space between the phandle value and the following number. Fixes: 8c59a97ce096 ("Fix missing labels when emitting dts format") Cc: Grant Likely <grant.likely@xxxxxxx> Signed-off-by: Rob Herring <robh@xxxxxxxxxx> --- Well, I was wrong with the previous fix that REF_PHANDLE didn't have problems... IMO, this code is fragile due the mixture of type and non-type markers. I'd re-written Grant's original code to only iterate on type markers. That got reverted back to iterate thru all markers to fix label output. I think this needs to be re-thought on how to make it robust. Perhaps type and non-type markers should be split into 2 lists. treesource.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/treesource.c b/treesource.c index 09f0512060a9..8d4a617a361b 100644 --- a/treesource.c +++ b/treesource.c @@ -270,10 +270,10 @@ static void write_propval(FILE *f, struct property *prop) if (has_data_type_information(m)) { emit_type = m->type; fprintf(f, " %s", delim_start[emit_type]); - } - - if (m->type == LABEL) + } else if (m->type == LABEL) fprintf(f, " %s:", m->ref); + else if (m->offset) + fputc(' ', f); if (emit_type == TYPE_NONE) { assert(chunk_len == 0); -- 2.17.1