aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2011-01-04 16:03:44 -0500
committerDavid S. Miller <davem@davemloft.net>2011-01-06 14:16:54 -0500
commit2a8fe003741aa90b6b9453e90af4bbb7bc42918c (patch)
tree44450d3e65a5f1447424335e64213a1001d21d0a /net
parent70bfa2d2e1bfd90ef26758b5e2749f043a940037 (diff)
dcb: use after free in dcb_flushapp()
The original code has a use after free bug because it's not using the _safe() version of the list_for_each_entry() macro. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/dcb/dcbnl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/dcb/dcbnl.c b/net/dcb/dcbnl.c
index 4323bd441f0f..d900ab99814a 100644
--- a/net/dcb/dcbnl.c
+++ b/net/dcb/dcbnl.c
@@ -1643,9 +1643,10 @@ EXPORT_SYMBOL(dcb_setapp);
1643static void dcb_flushapp(void) 1643static void dcb_flushapp(void)
1644{ 1644{
1645 struct dcb_app_type *app; 1645 struct dcb_app_type *app;
1646 struct dcb_app_type *tmp;
1646 1647
1647 spin_lock(&dcb_lock); 1648 spin_lock(&dcb_lock);
1648 list_for_each_entry(app, &dcb_app_list, list) { 1649 list_for_each_entry_safe(app, tmp, &dcb_app_list, list) {
1649 list_del(&app->list); 1650 list_del(&app->list);
1650 kfree(app); 1651 kfree(app);
1651 } 1652 }