summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorJulia Lawall <julia@diku.dk>2008-08-23 18:27:38 +0200
committerJohn W. Linville <linville@tuxdriver.com>2008-08-26 20:06:32 -0400
commit667d8af9af775a5fea203890978037ea750816cc (patch)
tree5bdc41ed57b9a5080fd63fafe17c0d5bbd0b0508 /net
parent087d833e5a9f67ba933cb32eaf5a2279c1a5b47c (diff)
downloadlinux-3.10-667d8af9af775a5fea203890978037ea750816cc.tar.gz
linux-3.10-667d8af9af775a5fea203890978037ea750816cc.tar.bz2
linux-3.10-667d8af9af775a5fea203890978037ea750816cc.zip
net/mac80211/mesh.c: correct the argument to __mesh_table_free
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> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/mesh.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
index b5933b27149..35f2f95f2fa 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;
}