Driver needs to nullify the port select attributes of the LAG when
port selection is destroyed, otherwise it breaks recreation of the
LAG.
It fixes the below kernel oops:
[ 587.906377] BUG: kernel NULL pointer dereference, address:
0000000000000008
[ 587.908843] #PF: supervisor read access in kernel mode
[ 587.910730] #PF: error_code(0x0000) - not-present page
[ 587.912580] PGD 0 P4D 0
[ 587.913632] Oops: 0000 [#1] SMP PTI
[ 587.914644] CPU: 5 PID: 165 Comm: kworker/u20:5 Tainted: G OE 5.9.0_mlnx #1
[ 587.916152] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
[ 587.918332] Workqueue: mlx5_lag mlx5_do_bond_work [mlx5_core]
[ 587.919479] RIP: 0010:mlx5_del_flow_rules+0x10/0x270 [mlx5_core]
[ 587.920568] mlx5_core 0000:08:00.1 enp8s0f1: Link up
[ 587.920680] Code: c0 09 80 a0 e8 cf 42 a4 e0 48 c7 c3 f4 ff ff ff e8 8a 88 dd e0 e9 ab fe ff ff 0f 1f 44 00 00 41 56 41 55 49 89 fd 41 54 55 53 <48> 8b 47 08 48 8b 68 28 48 85 ed 74 2e 48 8d 7d 38 e8 6a 64 34 e1
[ 587.925116] bond0: (slave enp8s0f1): Enslaving as an active interface with an up link
[ 587.930415] RSP: 0018:
ffffc9000048fd88 EFLAGS:
00010282
[ 587.930417] RAX:
ffff88846c14fac0 RBX:
ffff88846cddcb80 RCX:
0000000080400007
[ 587.930417] RDX:
0000000080400008 RSI:
ffff88846cddcb80 RDI:
0000000000000000
[ 587.930419] RBP:
ffff88845fd80140 R08:
0000000000000001 R09:
ffffffffa074ba00
[ 587.938132] R10:
ffff88846c14fec0 R11:
0000000000000001 R12:
ffff88846c122f10
[ 587.939473] R13:
0000000000000000 R14:
0000000000000001 R15:
ffff88846d7a0000
[ 587.940800] FS:
0000000000000000(0000) GS:
ffff88846fa80000(0000) knlGS:
0000000000000000
[ 587.942416] CS: 0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[ 587.943536] CR2:
0000000000000008 CR3:
000000000240a002 CR4:
0000000000770ee0
[ 587.944904] DR0:
0000000000000000 DR1:
0000000000000000 DR2:
0000000000000000
[ 587.946308] DR3:
0000000000000000 DR6:
00000000fffe0ff0 DR7:
0000000000000400
[ 587.947639] PKRU:
55555554
[ 587.948236] Call Trace:
[ 587.948834] mlx5_lag_destroy_definer.isra.3+0x16/0x90 [mlx5_core]
[ 587.950033] mlx5_lag_destroy_definers+0x5b/0x80 [mlx5_core]
[ 587.951128] mlx5_deactivate_lag+0x6e/0x80 [mlx5_core]
[ 587.952146] mlx5_do_bond+0x150/0x450 [mlx5_core]
[ 587.953086] mlx5_do_bond_work+0x3e/0x50 [mlx5_core]
[ 587.954086] process_one_work+0x1eb/0x3e0
[ 587.954899] worker_thread+0x2d/0x3c0
[ 587.955656] ? process_one_work+0x3e0/0x3e0
[ 587.956493] kthread+0x115/0x130
[ 587.957174] ? kthread_park+0x90/0x90
[ 587.957929] ret_from_fork+0x1f/0x30
[ 587.973055] ---[ end trace
71ccd6eca89f5513 ]---
Fixes: a5b3c1ca5f2f ("net/mlx5: Lag, add support to create/destroy/modify port selection")
Signed-off-by: Maor Gottlieb <maorg@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>