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

simple_open.cocci (1244B)


      1// SPDX-License-Identifier: GPL-2.0
      2/// Remove an open coded simple_open() function
      3/// and replace file operations references to the function
      4/// with simple_open() instead.
      5///
      6// Confidence: High
      7// Comments:
      8// Options: --no-includes --include-headers
      9
     10virtual patch
     11virtual report
     12
     13@ open depends on patch @
     14identifier open_f != simple_open;
     15identifier i, f;
     16@@
     17-int open_f(struct inode *i, struct file *f)
     18-{
     19(
     20-if (i->i_private)
     21-f->private_data = i->i_private;
     22|
     23-f->private_data = i->i_private;
     24)
     25-return 0;
     26-}
     27
     28@ has_open depends on open @
     29identifier fops;
     30identifier open.open_f;
     31@@
     32struct file_operations fops = {
     33...,
     34-.open = open_f,
     35+.open = simple_open,
     36...
     37};
     38
     39@ openr depends on report @
     40identifier open_f != simple_open;
     41identifier i, f;
     42position p;
     43@@
     44int open_f@p(struct inode *i, struct file *f)
     45{
     46(
     47if (i->i_private)
     48f->private_data = i->i_private;
     49|
     50f->private_data = i->i_private;
     51)
     52return 0;
     53}
     54
     55@ has_openr depends on openr @
     56identifier fops;
     57identifier openr.open_f;
     58position p;
     59@@
     60struct file_operations fops = {
     61...,
     62.open = open_f@p,
     63...
     64};
     65
     66@script:python@
     67pf << openr.p;
     68ps << has_openr.p;
     69@@
     70
     71coccilib.report.print_report(pf[0],"WARNING opportunity for simple_open, see also structure on line %s"%(ps[0].line))