diff options
author | Jay Vosburgh <fubar@us.ibm.com> | 2007-11-14 00:16:29 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-11-14 00:16:29 -0500 |
commit | 8cbdeec637c1ce87bf329c5c19a9964e36bdf9fb (patch) | |
tree | 0019a5547ef145cdcd9f6d23e3b044f341829b8c /drivers/net/bonding | |
parent | ce1d18e0064d55106a7042c07cfca97cad66f407 (diff) |
[BONDING]: Fix resource use after free
Fix bond_destroy and bond_free_all to not reference the struct
net_device after calling unregister_netdevice.
Bug and offending change reported by Moni Shoua <monis@voltaire.com>
Signed-off-by: Jay Vosburgh <fubar@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r-- | drivers/net/bonding/bond_main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index a198404a3e36..423298c84a1d 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -1847,9 +1847,9 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev) | |||
1847 | */ | 1847 | */ |
1848 | void bond_destroy(struct bonding *bond) | 1848 | void bond_destroy(struct bonding *bond) |
1849 | { | 1849 | { |
1850 | unregister_netdevice(bond->dev); | ||
1851 | bond_deinit(bond->dev); | 1850 | bond_deinit(bond->dev); |
1852 | bond_destroy_sysfs_entry(bond); | 1851 | bond_destroy_sysfs_entry(bond); |
1852 | unregister_netdevice(bond->dev); | ||
1853 | } | 1853 | } |
1854 | 1854 | ||
1855 | /* | 1855 | /* |
@@ -4475,8 +4475,8 @@ static void bond_free_all(void) | |||
4475 | bond_mc_list_destroy(bond); | 4475 | bond_mc_list_destroy(bond); |
4476 | /* Release the bonded slaves */ | 4476 | /* Release the bonded slaves */ |
4477 | bond_release_all(bond_dev); | 4477 | bond_release_all(bond_dev); |
4478 | unregister_netdevice(bond_dev); | ||
4479 | bond_deinit(bond_dev); | 4478 | bond_deinit(bond_dev); |
4479 | unregister_netdevice(bond_dev); | ||
4480 | } | 4480 | } |
4481 | 4481 | ||
4482 | #ifdef CONFIG_PROC_FS | 4482 | #ifdef CONFIG_PROC_FS |