• Julia Lawall's avatar
    drivers/pcmcia: Add missing iounmap · 5a1c3e1a
    Julia Lawall authored
    of_iomap calls ioremap, and so should be matched with an iounmap.  At the
    two error returns, the result of calling of_iomap is only stored in a local
    variable, so these error paths need to call iounmap.  Furthermore, this
    function ultimately stores the result of of_iomap in an array that is local
    to the file.  These values should be iounmapped at some point.  I have
    added a corresponding call to iounmap at the end of the function
    m8xx_remove.
    
    The problem was found using the following semantic match.
    (http://www.emn.fr/x-info/coccinelle/)
    
    // <smpl>
    @@
    type T,T1,T2;
    identifier E;
    statement S;
    expression x1,x2,x3;
    int ret;
    @@
    
      T E;
      ...
    * E = of_iomap(...);
      if (E == NULL) S
      ... when != iounmap(...,(T1)E,...)
          when != if (E != NULL) { ... iounmap(...,(T1)E,...); ...}
          when != x1 = (T1)E
          when != E = x3;
          when any
      if (...) {
        ... when != iounmap(...,(T2)E,...)
            when != if (E != NULL) { ... iounmap(...,(T2)E,...); ...}
            when != x2 = (T2)E
    (
    *   return;
    |
    *   return ret;
    )
      }
    // </smpl>
    Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
    Vitaly Bordug <vitb@kernel.crashing.org>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Olof Johansson <olof@lixom.net>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Kumar Gala <galak@kernel.crashing.org>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5a1c3e1a
m8xx_pcmcia.c 32.2 KB