18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci/// Make sure (of/i2c/platform)_device_id tables are NULL terminated 38c2ecf20Sopenharmony_ci// 48c2ecf20Sopenharmony_ci// Keywords: of_table i2c_table platform_table 58c2ecf20Sopenharmony_ci// Confidence: Medium 68c2ecf20Sopenharmony_ci// Options: --include-headers 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_civirtual patch 98c2ecf20Sopenharmony_civirtual context 108c2ecf20Sopenharmony_civirtual org 118c2ecf20Sopenharmony_civirtual report 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci@depends on context@ 148c2ecf20Sopenharmony_ciidentifier var, arr; 158c2ecf20Sopenharmony_ciexpression E; 168c2ecf20Sopenharmony_ci@@ 178c2ecf20Sopenharmony_ci( 188c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 198c2ecf20Sopenharmony_ci ..., 208c2ecf20Sopenharmony_ci { 218c2ecf20Sopenharmony_ci .var = E, 228c2ecf20Sopenharmony_ci* } 238c2ecf20Sopenharmony_ci}; 248c2ecf20Sopenharmony_ci| 258c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 268c2ecf20Sopenharmony_ci ..., 278c2ecf20Sopenharmony_ci* { ..., E, ... }, 288c2ecf20Sopenharmony_ci}; 298c2ecf20Sopenharmony_ci) 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci@depends on patch@ 328c2ecf20Sopenharmony_ciidentifier var, arr; 338c2ecf20Sopenharmony_ciexpression E; 348c2ecf20Sopenharmony_ci@@ 358c2ecf20Sopenharmony_ci( 368c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 378c2ecf20Sopenharmony_ci ..., 388c2ecf20Sopenharmony_ci { 398c2ecf20Sopenharmony_ci .var = E, 408c2ecf20Sopenharmony_ci- } 418c2ecf20Sopenharmony_ci+ }, 428c2ecf20Sopenharmony_ci+ { } 438c2ecf20Sopenharmony_ci}; 448c2ecf20Sopenharmony_ci| 458c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 468c2ecf20Sopenharmony_ci ..., 478c2ecf20Sopenharmony_ci { ..., E, ... }, 488c2ecf20Sopenharmony_ci+ { }, 498c2ecf20Sopenharmony_ci}; 508c2ecf20Sopenharmony_ci) 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ci@r depends on org || report@ 538c2ecf20Sopenharmony_ciposition p1; 548c2ecf20Sopenharmony_ciidentifier var, arr; 558c2ecf20Sopenharmony_ciexpression E; 568c2ecf20Sopenharmony_ci@@ 578c2ecf20Sopenharmony_ci( 588c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 598c2ecf20Sopenharmony_ci ..., 608c2ecf20Sopenharmony_ci { 618c2ecf20Sopenharmony_ci .var = E, 628c2ecf20Sopenharmony_ci } 638c2ecf20Sopenharmony_ci @p1 648c2ecf20Sopenharmony_ci}; 658c2ecf20Sopenharmony_ci| 668c2ecf20Sopenharmony_cistruct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = { 678c2ecf20Sopenharmony_ci ..., 688c2ecf20Sopenharmony_ci { ..., E, ... } 698c2ecf20Sopenharmony_ci @p1 708c2ecf20Sopenharmony_ci}; 718c2ecf20Sopenharmony_ci) 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci@script:python depends on org@ 748c2ecf20Sopenharmony_cip1 << r.p1; 758c2ecf20Sopenharmony_ciarr << r.arr; 768c2ecf20Sopenharmony_ci@@ 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_cicocci.print_main(arr,p1) 798c2ecf20Sopenharmony_ci 808c2ecf20Sopenharmony_ci@script:python depends on report@ 818c2ecf20Sopenharmony_cip1 << r.p1; 828c2ecf20Sopenharmony_ciarr << r.arr; 838c2ecf20Sopenharmony_ci@@ 848c2ecf20Sopenharmony_ci 858c2ecf20Sopenharmony_cimsg = "%s is not NULL terminated at line %s" % (arr, p1[0].line) 868c2ecf20Sopenharmony_cicoccilib.report.print_report(p1[0],msg) 87