xref: /linux/scripts/coccinelle/misc/of_table.cocci (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
1*b2441318SGreg Kroah-Hartman// SPDX-License-Identifier: GPL-2.0
267afc211SDaniel Granat/// Make sure (of/i2c/platform)_device_id tables are NULL terminated
32d5c5dbbSStephen Boyd//
467afc211SDaniel Granat// Keywords: of_table i2c_table platform_table
52d5c5dbbSStephen Boyd// Confidence: Medium
62d5c5dbbSStephen Boyd// Options: --include-headers
72d5c5dbbSStephen Boyd
82d5c5dbbSStephen Boydvirtual patch
92d5c5dbbSStephen Boydvirtual context
102d5c5dbbSStephen Boydvirtual org
112d5c5dbbSStephen Boydvirtual report
122d5c5dbbSStephen Boyd
132d5c5dbbSStephen Boyd@depends on context@
142d5c5dbbSStephen Boydidentifier var, arr;
152d5c5dbbSStephen Boydexpression E;
162d5c5dbbSStephen Boyd@@
1767afc211SDaniel Granat(
1867afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
192d5c5dbbSStephen Boyd	...,
202d5c5dbbSStephen Boyd	{
212d5c5dbbSStephen Boyd	.var = E,
222d5c5dbbSStephen Boyd*	}
232d5c5dbbSStephen Boyd};
2467afc211SDaniel Granat|
2567afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
2667afc211SDaniel Granat	...,
2767afc211SDaniel Granat*	{ ..., E, ... },
2867afc211SDaniel Granat};
2967afc211SDaniel Granat)
302d5c5dbbSStephen Boyd
312d5c5dbbSStephen Boyd@depends on patch@
322d5c5dbbSStephen Boydidentifier var, arr;
332d5c5dbbSStephen Boydexpression E;
342d5c5dbbSStephen Boyd@@
3567afc211SDaniel Granat(
3667afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
372d5c5dbbSStephen Boyd	...,
382d5c5dbbSStephen Boyd	{
392d5c5dbbSStephen Boyd	.var = E,
402d5c5dbbSStephen Boyd-	}
412d5c5dbbSStephen Boyd+	},
422d5c5dbbSStephen Boyd+	{ }
432d5c5dbbSStephen Boyd};
4467afc211SDaniel Granat|
4567afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
4667afc211SDaniel Granat	...,
4767afc211SDaniel Granat	{ ..., E, ... },
4867afc211SDaniel Granat+	{ },
4967afc211SDaniel Granat};
5067afc211SDaniel Granat)
512d5c5dbbSStephen Boyd
522d5c5dbbSStephen Boyd@r depends on org || report@
532d5c5dbbSStephen Boydposition p1;
542d5c5dbbSStephen Boydidentifier var, arr;
552d5c5dbbSStephen Boydexpression E;
562d5c5dbbSStephen Boyd@@
5767afc211SDaniel Granat(
5867afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
592d5c5dbbSStephen Boyd	...,
602d5c5dbbSStephen Boyd	{
612d5c5dbbSStephen Boyd	.var = E,
622d5c5dbbSStephen Boyd	}
632d5c5dbbSStephen Boyd	@p1
642d5c5dbbSStephen Boyd};
6567afc211SDaniel Granat|
6667afc211SDaniel Granatstruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
6767afc211SDaniel Granat	...,
6867afc211SDaniel Granat	{ ..., E, ... }
6967afc211SDaniel Granat	@p1
7067afc211SDaniel Granat};
7167afc211SDaniel Granat)
722d5c5dbbSStephen Boyd
732d5c5dbbSStephen Boyd@script:python depends on org@
742d5c5dbbSStephen Boydp1 << r.p1;
752d5c5dbbSStephen Boydarr << r.arr;
762d5c5dbbSStephen Boyd@@
772d5c5dbbSStephen Boyd
782d5c5dbbSStephen Boydcocci.print_main(arr,p1)
792d5c5dbbSStephen Boyd
802d5c5dbbSStephen Boyd@script:python depends on report@
812d5c5dbbSStephen Boydp1 << r.p1;
822d5c5dbbSStephen Boydarr << r.arr;
832d5c5dbbSStephen Boyd@@
842d5c5dbbSStephen Boyd
852d5c5dbbSStephen Boydmsg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
862d5c5dbbSStephen Boydcoccilib.report.print_report(p1[0],msg)
87