forked from Minki/linux
[BOND]: Fix bond_init() error path handling.
From: Florin Malita <fmalita@gmail.com> bond_init() is not releasing rtnl_sem after register_netdevice() and before calling unregister_netdevice() (from bond_free_all()) in the exception path. As the device registration is not completed (dev->reg_state == NETREG_REGISTERING), the call to unregister_netdevice() triggers BUG_ON(dev->reg_state != NETREG_REGISTERED). Signed-off-by: Florin Malita <fmalita@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
88f964db6e
commit
40abc27066
@ -5039,6 +5039,14 @@ static int __init bonding_init(void)
|
||||
return 0;
|
||||
|
||||
out_err:
|
||||
/*
|
||||
* rtnl_unlock() will run netdev_run_todo(), putting the
|
||||
* thus-far-registered bonding devices into a state which
|
||||
* unregigister_netdevice() will accept
|
||||
*/
|
||||
rtnl_unlock();
|
||||
rtnl_lock();
|
||||
|
||||
/* free and unregister all bonds that were successfully added */
|
||||
bond_free_all();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user