bridge: call br_netpoll_disable in br_add_if
When netdev_set_master faild in br_add_if, we should call br_netpoll_disable to do some cleanup jobs,such as free the memory of struct netpoll which allocated in br_netpoll_enable. Signed-off-by: Gao feng <gaofeng@cn.fujitsu.com> Acked-by: Cong Wang <amwang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
9650388b5c
Коммит
9b1536c490
|
@ -366,11 +366,11 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
|
|||
|
||||
err = netdev_set_master(dev, br->dev);
|
||||
if (err)
|
||||
goto err3;
|
||||
goto err4;
|
||||
|
||||
err = netdev_rx_handler_register(dev, br_handle_frame, p);
|
||||
if (err)
|
||||
goto err4;
|
||||
goto err5;
|
||||
|
||||
dev->priv_flags |= IFF_BRIDGE_PORT;
|
||||
|
||||
|
@ -402,8 +402,10 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
|
|||
|
||||
return 0;
|
||||
|
||||
err4:
|
||||
err5:
|
||||
netdev_set_master(dev, NULL);
|
||||
err4:
|
||||
br_netpoll_disable(p);
|
||||
err3:
|
||||
sysfs_remove_link(br->ifobj, p->dev->name);
|
||||
err2:
|
||||
|
|
Загрузка…
Ссылка в новой задаче