Skip to content
  • Julia Lawall's avatar
    [CPUFREQ] drivers/cpufreq/cpufreq.c: Adjust error handling code involving cpufreq_cpu_put · f1829e4a
    Julia Lawall authored
    After calling cpufreq_cpu_get, error handling code should call
    cpufreq_cpu_put.
    
    The semantic match that finds this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/
    
    )
    
    // <smpl>
    @r@
    expression x,E;
    statement S;
    position p1,p2,p3;
    @@
    
    (
    if ((x = cpufreq_cpu_get@p1(...)) == NULL || ...) S
    |
    x = cpufreq_cpu_get@p1(...)
    ... when != x
    if (x == NULL || ...) S
    )
    <...
    if@p3 (...) { ... when != cpufreq_cpu_put(x)
                      when != if (x) { ... cpufreq_cpu_put(x); ...}
        return@p2 ...;
    }
    ...>
    (
    return x;
    |
    return 0;
    |
    x = E
    |
    E = x
    |
    cpufreq_cpu_put(x)
    )
    
    @exists@
    position r.p1,r.p2,r.p3;
    expression x;
    int ret != 0;
    statement S;
    @@
    
    * x = cpufreq_cpu_get@p1(...)
      <...
    * if@p3 (...)
      S
      ...>
    * return@p2 \(NULL\|ret\);
    // </smpl>
    
    Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
    Signed-off-by: default avatarDave Jones <davej@redhat.com>
    f1829e4a