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

platform_no_drv_owner.cocci (3902B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/// Remove .owner field if calls are used which set it automatically
      3///
      4// Confidence: High
      5// Copyright: (C) 2014 Wolfram Sang.
      6
      7virtual patch
      8virtual context
      9virtual org
     10virtual report
     11
     12@match1@
     13declarer name module_i2c_driver;
     14declarer name module_platform_driver;
     15declarer name module_platform_driver_probe;
     16identifier __driver;
     17@@
     18(
     19	module_i2c_driver(__driver);
     20|
     21	module_platform_driver(__driver);
     22|
     23	module_platform_driver_probe(__driver, ...);
     24)
     25
     26@fix1 depends on match1 && patch && !context && !org && !report@
     27identifier match1.__driver;
     28@@
     29	static struct platform_driver __driver = {
     30		.driver = {
     31-			.owner = THIS_MODULE,
     32		}
     33	};
     34
     35@fix1_i2c depends on match1 && patch && !context && !org && !report@
     36identifier match1.__driver;
     37@@
     38	static struct i2c_driver __driver = {
     39		.driver = {
     40-			.owner = THIS_MODULE,
     41		}
     42	};
     43
     44@match2@
     45identifier __driver;
     46@@
     47(
     48	platform_driver_register(&__driver)
     49|
     50	platform_driver_probe(&__driver, ...)
     51|
     52	platform_create_bundle(&__driver, ...)
     53|
     54	i2c_add_driver(&__driver)
     55)
     56
     57@fix2 depends on match2 && patch && !context && !org && !report@
     58identifier match2.__driver;
     59@@
     60	static struct platform_driver __driver = {
     61		.driver = {
     62-			.owner = THIS_MODULE,
     63		}
     64	};
     65
     66@fix2_i2c depends on match2 && patch && !context && !org && !report@
     67identifier match2.__driver;
     68@@
     69	static struct i2c_driver __driver = {
     70		.driver = {
     71-			.owner = THIS_MODULE,
     72		}
     73	};
     74
     75// ----------------------------------------------------------------------------
     76
     77@fix1_context depends on match1 && !patch && (context || org || report)@
     78identifier match1.__driver;
     79position j0;
     80@@
     81
     82 	static struct platform_driver __driver = {
     83		.driver = {
     84*			.owner@j0 = THIS_MODULE,
     85		}
     86	};
     87
     88@fix1_i2c_context depends on match1 && !patch && (context || org || report)@
     89identifier match1.__driver;
     90position j0;
     91@@
     92
     93	static struct i2c_driver __driver = {
     94		.driver = {
     95*			.owner@j0 = THIS_MODULE,
     96		}
     97	};
     98
     99@fix2_context depends on match2 && !patch && (context || org || report)@
    100identifier match2.__driver;
    101position j0;
    102@@
    103
    104 	static struct platform_driver __driver = {
    105		.driver = {
    106*			.owner@j0 = THIS_MODULE,
    107		}
    108	};
    109
    110@fix2_i2c_context depends on match2 && !patch && (context || org || report)@
    111identifier match2.__driver;
    112position j0;
    113@@
    114
    115	static struct i2c_driver __driver = {
    116		.driver = {
    117*			.owner@j0 = THIS_MODULE,
    118		}
    119	};
    120
    121// ----------------------------------------------------------------------------
    122
    123@script:python fix1_org depends on org@
    124j0 << fix1_context.j0;
    125@@
    126
    127msg = "No need to set .owner here. The core will do it."
    128coccilib.org.print_todo(j0[0], msg)
    129
    130@script:python fix1_i2c_org depends on org@
    131j0 << fix1_i2c_context.j0;
    132@@
    133
    134msg = "No need to set .owner here. The core will do it."
    135coccilib.org.print_todo(j0[0], msg)
    136
    137@script:python fix2_org depends on org@
    138j0 << fix2_context.j0;
    139@@
    140
    141msg = "No need to set .owner here. The core will do it."
    142coccilib.org.print_todo(j0[0], msg)
    143
    144@script:python fix2_i2c_org depends on org@
    145j0 << fix2_i2c_context.j0;
    146@@
    147
    148msg = "No need to set .owner here. The core will do it."
    149coccilib.org.print_todo(j0[0], msg)
    150
    151// ----------------------------------------------------------------------------
    152
    153@script:python fix1_report depends on report@
    154j0 << fix1_context.j0;
    155@@
    156
    157msg = "No need to set .owner here. The core will do it."
    158coccilib.report.print_report(j0[0], msg)
    159
    160@script:python fix1_i2c_report depends on report@
    161j0 << fix1_i2c_context.j0;
    162@@
    163
    164msg = "No need to set .owner here. The core will do it."
    165coccilib.report.print_report(j0[0], msg)
    166
    167@script:python fix2_report depends on report@
    168j0 << fix2_context.j0;
    169@@
    170
    171msg = "No need to set .owner here. The core will do it."
    172coccilib.report.print_report(j0[0], msg)
    173
    174@script:python fix2_i2c_report depends on report@
    175j0 << fix2_i2c_context.j0;
    176@@
    177
    178msg = "No need to set .owner here. The core will do it."
    179coccilib.report.print_report(j0[0], msg)
    180