cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

of_table.cocci (1366B)


      1// SPDX-License-Identifier: GPL-2.0
      2/// Make sure (of/i2c/platform)_device_id tables are NULL terminated
      3//
      4// Keywords: of_table i2c_table platform_table
      5// Confidence: Medium
      6// Options: --include-headers
      7
      8virtual patch
      9virtual context
     10virtual org
     11virtual report
     12
     13@depends on context@
     14identifier var, arr;
     15expression E;
     16@@
     17(
     18struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     19	...,
     20	{
     21	.var = E,
     22*	}
     23};
     24|
     25struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     26	...,
     27*	{ ..., E, ... },
     28};
     29)
     30
     31@depends on patch@
     32identifier var, arr;
     33expression E;
     34@@
     35(
     36struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     37	...,
     38	{
     39	.var = E,
     40-	}
     41+	},
     42+	{ }
     43};
     44|
     45struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     46	...,
     47	{ ..., E, ... },
     48+	{ },
     49};
     50)
     51
     52@r depends on org || report@
     53position p1;
     54identifier var, arr;
     55expression E;
     56@@
     57(
     58struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     59	...,
     60	{
     61	.var = E,
     62	}
     63	@p1
     64};
     65|
     66struct \(of_device_id \| i2c_device_id \| platform_device_id\) arr[] = {
     67	...,
     68	{ ..., E, ... }
     69	@p1
     70};
     71)
     72
     73@script:python depends on org@
     74p1 << r.p1;
     75arr << r.arr;
     76@@
     77
     78cocci.print_main(arr,p1)
     79
     80@script:python depends on report@
     81p1 << r.p1;
     82arr << r.arr;
     83@@
     84
     85msg = "%s is not NULL terminated at line %s" % (arr, p1[0].line)
     86coccilib.report.print_report(p1[0],msg)