Re: [PATCH v2] coccinelle: Check for missing NULL terminators in of_device_id tables

From: Stephen Boyd
Date: Mon Jun 09 2014 - 17:50:53 EST


On 06/09/14 14:47, Michal Marek wrote:
> Dne 3.6.2014 20:25, Julia Lawall napsal(a):
>> From: Stephen Boyd <sboyd@xxxxxxxxxxxxxx>
>>
>> Failure to terminate an of_device_id table can lead to confusing
>> failures depending on where the compiler places the array. Add a
>> check to make sure these tables are terminated. Thanks to Mitchel
>> Humpherys for coming up with the pattern initially.
>>
>> Cc: Mitchel Humpherys <mitchelh@xxxxxxxxxxxxxx>
>> Cc: Julia Lawall <Julia.Lawall@xxxxxxx>
>> Cc: Gilles Muller <Gilles.Muller@xxxxxxx>
>> Cc: Nicolas Palix <nicolas.palix@xxxxxxx>
>> Cc: Grant Likely <grant.likely@xxxxxxxxxx>
>> Cc: Rob Herring <robh+dt@xxxxxxxxxx>
>> Cc: devicetree@xxxxxxxxxxxxxxx
>> Signed-off-by: Stephen Boyd <sboyd@xxxxxxxxxxxxxx>
>> Acked-by: Grant Likely <grant.likely@xxxxxxxxxx>
>> Signed-off-by: Julia Lawall <julia.lawall@xxxxxxx>
>>
>> ---
>>
>> v3: Removed unneeded rule bad_of_table. Placed * in context rule on the
>> closing brace; putting it on the field caused all fields to be marked.
>>
>> v4: corrected authorship
>>
>> scripts/coccinelle/misc/of_table.cocci | 62 +++++++++++++++++++++++++++++++++
>> 1 file changed, 62 insertions(+)
> Applied to kbuild.git#misc, thanks. BTW, what is so special about of
> device drivers? Shouldn't we check for missing sentinels in all kinds of
> device tables?
>

Yes the rule should probably be expanded to cover more tables. I guess
this is just more noticeable because a driver may match some device that
it isn't supposed to match and start writing random bits to registers it
shouldn't be, causing the system to hang.

--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/