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