diff options
author | Dan Carpenter <error27@gmail.com> | 2011-01-04 16:03:44 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-01-06 14:16:54 -0500 |
commit | 2a8fe003741aa90b6b9453e90af4bbb7bc42918c (patch) | |
tree | 44450d3e65a5f1447424335e64213a1001d21d0a /net/dcb | |
parent | 70bfa2d2e1bfd90ef26758b5e2749f043a940037 (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/dcb')
-rw-r--r-- | net/dcb/dcbnl.c | 3 |
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); | |||
1643 | static void dcb_flushapp(void) | 1643 | static 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 | } |