Messages in this thread Patch in this message | | | Date | Sat, 23 Aug 2008 18:27:38 +0200 (CEST) | From | Julia Lawall <> | Subject | [PATCH] net/mac80211/mesh.c: correct the argument to __mesh_table_free |
| |
From: Julia Lawall <julia@diku.dk>
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 bd9b448f4c0a514559bdae4ca18ca3e8cd999c6d)
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: Julia Lawall <julia@diku.dk>
--- net/mac80211/mesh.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c index b5933b2..35f2f95 100644 --- a/net/mac80211/mesh.c +++ b/net/mac80211/mesh.c @@ -383,7 +383,7 @@ errcopy: hlist_for_each_safe(p, q, &newtbl->hash_buckets[i]) tbl->free_node(p, 0); } - __mesh_table_free(tbl); + __mesh_table_free(newtbl); endgrow: return NULL; }
| |