s390/qeth: delay draining the TX buffers
Wait until the QDIO data connection is severed. Otherwise the device
might still be processing the buffers, and end up accessing skb data
that we already freed.
Fixes: 8b5026bc16
("s390/qeth: fix qdio teardown after early init error")
Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
83896b0bd8
commit
5bf490e680
@ -284,11 +284,11 @@ static void qeth_l2_stop_card(struct qeth_card *card)
|
||||
|
||||
if (card->state == CARD_STATE_SOFTSETUP) {
|
||||
qeth_clear_ipacmd_list(card);
|
||||
qeth_drain_output_queues(card);
|
||||
card->state = CARD_STATE_DOWN;
|
||||
}
|
||||
|
||||
qeth_qdio_clear_card(card, 0);
|
||||
qeth_drain_output_queues(card);
|
||||
qeth_clear_working_pool_list(card);
|
||||
flush_workqueue(card->event_wq);
|
||||
qeth_flush_local_addrs(card);
|
||||
|
@ -1168,11 +1168,11 @@ static void qeth_l3_stop_card(struct qeth_card *card)
|
||||
if (card->state == CARD_STATE_SOFTSETUP) {
|
||||
qeth_l3_clear_ip_htable(card, 1);
|
||||
qeth_clear_ipacmd_list(card);
|
||||
qeth_drain_output_queues(card);
|
||||
card->state = CARD_STATE_DOWN;
|
||||
}
|
||||
|
||||
qeth_qdio_clear_card(card, 0);
|
||||
qeth_drain_output_queues(card);
|
||||
qeth_clear_working_pool_list(card);
|
||||
flush_workqueue(card->event_wq);
|
||||
qeth_flush_local_addrs(card);
|
||||
|
Loading…
Reference in New Issue
Block a user