• J
    net/mac80211/mesh.c: correct the argument to __mesh_table_free · 667d8af9
    Julia Lawall 提交于
    In the function mesh_table_grow, it is the new table not the argument table
    that should be freed if the function fails (cf commit
    bd9b448f)
    
    The semantic match that detects this problem is as follows:
    (http://www.emn.fr/x-info/coccinelle/)
    
    // <smpl>
    @r exists@
    local idexpression x;
    expression E,f;
    position p1,p2,p3;
    identifier l;
    statement S;
    @@
    
    x = mesh_table_alloc@p1(...)
    ...
    if (x == NULL) S
    ... when != E = x
        when != mesh_table_free(x)
    goto@p2 l;
    ... when != E = x
        when != f(...,x,...)
        when any
    (
    return \(0\|x\);
    |
    return@p3 ...;
    )
    
    @script:python@
    p1 << r.p1;
    p2 << r.p2;
    p3 << r.p3;
    @@
    
    print "%s: call on line %s not freed or saved before return on line %s via line %s" % (p1[0].file,p1[0].line,p3[0].line,p2[0].line)
    // </smpl>
    Signed-off-by: NJulia Lawall <julia@diku.dk>
    Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
    667d8af9
mesh.c 11.9 KB