Lorenzo Bianconi
79d222d8d2
gro_cell: add napi_disable in gro_cells_destroy
...
[ Upstream commit 8e1da73acded4751a93d4166458a7e640f37d26c ]
Add napi_disable routine in gro_cells_destroy since starting from
commit c42858eaf492 ("gro_cells: remove spinlock protecting receive
queues") gro_cell_poll and gro_cells_destroy can run concurrently on
napi_skbs list producing a kernel Oops if the tunnel interface is
removed while gro_cell_poll is running. The following Oops has been
triggered removing a vxlan device while the interface is receiving
traffic
[ 5628.948853] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
[ 5628.949981] PGD 0 P4D 0
[ 5628.950308] Oops: 0002 [#1 ] SMP PTI
[ 5628.950748] CPU: 0 PID: 9 Comm: ksoftirqd/0 Not tainted 4.20.0-rc6+ #41
[ 5628.952940] RIP: 0010:gro_cell_poll+0x49/0x80
[ 5628.955615] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
[ 5628.956250] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
[ 5628.957102] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
[ 5628.957940] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
[ 5628.958803] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
[ 5628.959661] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
[ 5628.960682] FS: 0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
[ 5628.961616] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 5628.962359] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
[ 5628.963188] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 5628.964034] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 5628.964871] Call Trace:
[ 5628.965179] net_rx_action+0xf0/0x380
[ 5628.965637] __do_softirq+0xc7/0x431
[ 5628.966510] run_ksoftirqd+0x24/0x30
[ 5628.966957] smpboot_thread_fn+0xc5/0x160
[ 5628.967436] kthread+0x113/0x130
[ 5628.968283] ret_from_fork+0x3a/0x50
[ 5628.968721] Modules linked in:
[ 5628.969099] CR2: 0000000000000008
[ 5628.969510] ---[ end trace 9d9dedc7181661fe ]---
[ 5628.970073] RIP: 0010:gro_cell_poll+0x49/0x80
[ 5628.972965] RSP: 0018:ffffc9000004fdd8 EFLAGS: 00010202
[ 5628.973611] RAX: 0000000000000000 RBX: ffffe8ffffc08150 RCX: 0000000000000000
[ 5628.974504] RDX: 0000000000000000 RSI: ffff88802356bf00 RDI: ffffe8ffffc08150
[ 5628.975462] RBP: 0000000000000026 R08: 0000000000000000 R09: 0000000000000000
[ 5628.976413] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000040
[ 5628.977375] R13: ffffe8ffffc08100 R14: 0000000000000000 R15: 0000000000000040
[ 5628.978296] FS: 0000000000000000(0000) GS:ffff88803ea00000(0000) knlGS:0000000000000000
[ 5628.979327] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 5628.980044] CR2: 0000000000000008 CR3: 000000000221c000 CR4: 00000000000006b0
[ 5628.980929] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 5628.981736] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[ 5628.982409] Kernel panic - not syncing: Fatal exception in interrupt
[ 5628.983307] Kernel Offset: disabled
Fixes: c42858eaf492 ("gro_cells: remove spinlock protecting receive queues")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-01-09 17:14:43 +01:00
..
2018-10-03 17:00:47 -07:00
2018-11-21 09:24:04 +01:00
2017-11-02 11:10:55 +01:00
2018-07-22 14:28:44 +02:00
2017-11-02 11:10:55 +01:00
2018-07-22 14:28:43 +02:00
2019-01-09 17:14:43 +01:00
2018-12-13 09:18:46 +01:00
2018-11-04 14:52:39 +01:00
2018-11-04 14:52:48 +01:00
2018-09-05 09:26:27 +02:00
2018-12-01 09:42:52 +01:00
2018-12-05 19:41:27 +01:00
2019-01-09 17:14:43 +01:00
2018-09-19 22:43:43 +02:00
2018-10-18 09:16:21 +02:00
2018-02-25 11:07:52 +01:00
2018-07-22 14:28:49 +02:00
2018-08-06 16:20:48 +02:00
2017-06-16 11:48:40 -04:00
2017-08-22 13:40:23 -07:00
2018-12-01 09:43:00 +01:00
2018-04-29 11:33:13 +02:00
2019-01-09 17:14:42 +01:00
2019-01-09 17:14:43 +01:00
2017-11-02 11:10:55 +01:00
2018-03-31 18:10:41 +02:00
2018-06-11 22:49:19 +02:00
2018-06-16 09:45:14 +02:00
2018-11-04 14:52:43 +01:00
2017-07-04 22:35:16 +01:00
2018-12-01 09:42:51 +01:00
2018-12-21 14:13:10 +01:00
2018-09-09 19:55:52 +02:00
2018-02-22 15:42:28 +01:00
2017-10-21 01:56:38 +01:00
2018-12-21 14:13:10 +01:00
2018-10-18 09:16:18 +02:00
2018-08-09 12:16:38 +02:00
2017-07-04 22:35:17 +01:00
2018-09-29 03:06:01 -07:00
2018-07-22 14:28:49 +02:00
2018-11-04 14:52:50 +01:00
2018-12-05 19:41:17 +01:00
2017-11-02 11:10:55 +01:00
2017-11-01 12:19:03 +09:00
2018-08-24 13:09:13 +02:00
2018-10-13 09:27:29 +02:00
2018-05-16 10:10:26 +02:00
2018-11-04 14:52:46 +01:00
2018-12-17 09:28:46 +01:00
2018-12-17 09:28:47 +01:00
2018-08-24 13:09:22 +02:00
2018-07-22 14:28:47 +02:00
2018-12-21 14:13:13 +01:00
2017-08-07 14:48:48 -07:00
2018-12-08 13:03:41 +01:00
2018-12-05 19:41:11 +01:00
2017-11-02 10:04:46 -07:00
2018-08-22 07:46:08 +02:00
2017-11-02 11:10:55 +01:00
2018-11-04 14:52:40 +01:00
2017-11-02 11:10:55 +01:00
2018-11-13 11:14:50 -08:00
2018-05-19 10:20:24 +02:00
2017-09-04 13:25:20 +02:00
2017-11-02 11:10:55 +01:00
2018-11-04 14:52:49 +01:00