Patch "net: sky2: Fix shutdown crash" has been added to the 4.4-stable tree
This is a note to let you know that I've just added the patch titled
net: sky2: Fix shutdown crash
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
net-sky2-fix-shutdown-crash.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From foo@baz Thu Dec 8 07:18:57 CET 2016
From: Jeremy Linton <[email protected]>
Date: Thu, 17 Nov 2016 09:14:25 -0600
Subject: net: sky2: Fix shutdown crash
From: Jeremy Linton <[email protected]>
[ Upstream commit 06ba3b2133dc203e1e9bc36cee7f0839b79a9e8b ]
The sky2 frequently crashes during machine shutdown with:
sky2_get_stats+0x60/0x3d8 [sky2] dev_get_stats+0x68/0xd8 rtnl_fill_stats+0x54/0x140 rtnl_fill_ifinfo+0x46c/0xc68 rtmsg_ifinfo_build_skb+0x7c/0xf0 rtmsg_ifinfo.part.22+0x3c/0x70 rtmsg_ifinfo+0x50/0x5c netdev_state_change+0x4c/0x58 linkwatch_do_dev+0x50/0x88 __linkwatch_run_queue+0x104/0x1a4 linkwatch_event+0x30/0x3c process_one_work+0x140/0x3e0 worker_thread+0x60/0x44c kthread+0xdc/0xf0 ret_from_fork+0x10/0x50
This is caused by the sky2 being called after it has been shutdown. A previous thread about this can be found here:
https://lkml.org/lkml/2016/4/12/410
An alternative fix is to assure that IFF_UP gets cleared by calling dev_close() during shutdown. This is similar to what the bnx2/tg3/xgene and maybe others are doing to assure that the driver isn't being called following _shutdown().
--- drivers/net/ethernet/marvell/sky2.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
drivers/net/ethernet/marvell/sky2.c +13 -0
@@ -5220,6 +5220,19 @@ static SIMPLE_DEV_PM_OPS(sky2_pm_ops, skstatic void sky2_shutdown (struct pci_dev *pdev) { +struct sky2_hw *hw =pci_get_drvdata (pdev); +int port; + +for (port =0 ; port < hw->ports; port++) { +struct net_device *ndev = hw->dev[port]; + +rtnl_lock (); +if (netif_running (ndev)) { +dev_close (ndev); +netif_device_detach (ndev); + } +rtnl_unlock (); + }sky2_suspend (&pdev->dev);pci_wake_from_d3 (pdev,device_may_wakeup (&pdev->dev));pci_set_power_state (pdev, PCI_D3hot);
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/net-sky2-fix-shutdown-crash.patch