diff options
author | Ursula Braun <ubraun@linux.vnet.ibm.com> | 2016-07-04 08:07:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-07-05 02:32:08 -0400 |
commit | 7831b4ff0d926e0deeaabef9db8800ed069a2757 (patch) | |
tree | cf1e9a57c3722c214df60e89362d92f5e94a0e9c | |
parent | c8e2ca30fdba613c088ab2fd5ac7b9c69b402559 (diff) |
qeth: delete napi struct when removing a qeth device
A qeth_card contains a napi_struct linked to the net_device during
device probing. This struct must be deleted when removing the qeth
device, otherwise Panic on oops can occur when qeth devices are
repeatedly removed and added.
Fixes: a1c3ed4c9ca ("qeth: NAPI support for l2 and l3 discipline")
Cc: stable@vger.kernel.org # v2.6.37+
Signed-off-by: Ursula Braun <ubraun@linux.vnet.ibm.com>
Tested-by: Alexander Klein <ALKL@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/s390/net/qeth_l2_main.c | 1 | ||||
-rw-r--r-- | drivers/s390/net/qeth_l3_main.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/drivers/s390/net/qeth_l2_main.c b/drivers/s390/net/qeth_l2_main.c index 80b1979e8d95..df036b872b05 100644 --- a/drivers/s390/net/qeth_l2_main.c +++ b/drivers/s390/net/qeth_l2_main.c | |||
@@ -1051,6 +1051,7 @@ static void qeth_l2_remove_device(struct ccwgroup_device *cgdev) | |||
1051 | qeth_l2_set_offline(cgdev); | 1051 | qeth_l2_set_offline(cgdev); |
1052 | 1052 | ||
1053 | if (card->dev) { | 1053 | if (card->dev) { |
1054 | netif_napi_del(&card->napi); | ||
1054 | unregister_netdev(card->dev); | 1055 | unregister_netdev(card->dev); |
1055 | card->dev = NULL; | 1056 | card->dev = NULL; |
1056 | } | 1057 | } |
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c index ac544330daeb..709b52339ff9 100644 --- a/drivers/s390/net/qeth_l3_main.c +++ b/drivers/s390/net/qeth_l3_main.c | |||
@@ -3226,6 +3226,7 @@ static void qeth_l3_remove_device(struct ccwgroup_device *cgdev) | |||
3226 | qeth_l3_set_offline(cgdev); | 3226 | qeth_l3_set_offline(cgdev); |
3227 | 3227 | ||
3228 | if (card->dev) { | 3228 | if (card->dev) { |
3229 | netif_napi_del(&card->napi); | ||
3229 | unregister_netdev(card->dev); | 3230 | unregister_netdev(card->dev); |
3230 | card->dev = NULL; | 3231 | card->dev = NULL; |
3231 | } | 3232 | } |