diff options
author | Russell King <rmk+kernel@armlinux.org.uk> | 2017-02-28 11:05:54 +0000 |
---|---|---|
committer | Russell King <rmk+kernel@armlinux.org.uk> | 2017-02-28 11:05:54 +0000 |
commit | 399f157afd30ad942e08dfa0ab28734c50bc6b00 (patch) | |
tree | a772e97b85d91ae5553707f597b4443a511c99ec /drivers/net/ipvlan/ipvlan_main.c | |
parent | a09975bf6c756e4555a95258ff4b2286dcfddc4e (diff) | |
parent | 1a08e3d9e0ac4577ba89dbdb38f593fe050f88fc (diff) |
Merge branch 'devel-stable' into misc
Diffstat (limited to 'drivers/net/ipvlan/ipvlan_main.c')
-rw-r--r-- | drivers/net/ipvlan/ipvlan_main.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c index 693ec5b66222..8b0f99300cbc 100644 --- a/drivers/net/ipvlan/ipvlan_main.c +++ b/drivers/net/ipvlan/ipvlan_main.c @@ -135,6 +135,7 @@ err: static void ipvlan_port_destroy(struct net_device *dev) { struct ipvl_port *port = ipvlan_port_get_rtnl(dev); + struct sk_buff *skb; dev->priv_flags &= ~IFF_IPVLAN_MASTER; if (port->mode == IPVLAN_MODE_L3S) { @@ -144,7 +145,11 @@ static void ipvlan_port_destroy(struct net_device *dev) } netdev_rx_handler_unregister(dev); cancel_work_sync(&port->wq); - __skb_queue_purge(&port->backlog); + while ((skb = __skb_dequeue(&port->backlog)) != NULL) { + if (skb->dev) + dev_put(skb->dev); + kfree_skb(skb); + } kfree(port); } |