• Julia Lawall's avatar
    fs/btrfs: Add missing btrfs_free_path · b0839166
    Julia Lawall authored
    Btrfs_alloc_path should be matched with btrfs_free_path in error-handling code.
    
    A simplified version of the semantic match that finds this problem is as
    follows: (http://coccinelle.lip6.fr/)
    
    // <smpl>
    @r exists@
    local idexpression struct btrfs_path * x;
    expression ra,rb;
    position p1,p2;
    @@
    
    x = btrfs_alloc_path@p1(...)
    ...  when != btrfs_free_path(x,...)
         when != if (...) { ... btrfs_free_path(x,...) ...}
         when != x = ra
    if(...) { ... when != x = rb
         when forall
         when != btrfs_free_path(x,...)
     \(return <+...x...+>; \| return@p2...; \) }
    
    @script:python@
    p1 << r.p1;
    p2 << r.p2;
    @@
    
    cocci.print_main("alloc",p1)
    cocci.print_secs("return",p2)
    // </smpl>
    Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    b0839166
super.c 30.9 KB