netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload
@ 2020-06-12 10:08 wenxu
  2020-06-12 10:08 ` [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list wenxu
  2020-06-12 14:18 ` [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu
  0 siblings, 2 replies; 4+ messages in thread
From: wenxu @ 2020-06-12 10:08 UTC (permalink / raw)
  To: netdev; +Cc: davem, pablo, vladbu

From: wenxu <wenxu@ucloud.cn>

block->nooffloaddevcnt warning with following dmesg log:

When a indr device add in offload success. The block->nooffloaddevcnt
always zero. But When all the representors go away. All the flow_block_cb
cleanup. Then remove the indr device, The __tcf_block_put call
flow_indr_dev_setup_offload with FLOW_BLOCK_UNBIND will always return
-EOPNOTSUPP And make the warning comes out.

[  760.667058] #####################################################
[  760.668186] ## TEST test-ecmp-add-vxlan-encap-disable-sriov.sh ##
[  760.669179] #####################################################
[  761.780655] :test: Fedora 30 (Thirty)
[  761.783794] :test: Linux reg-r-vrt-018-180 5.7.0+
[  761.822890] :test: NIC ens1f0 FW 16.26.6000 PCI 0000:81:00.0 DEVICE 0x1019 ConnectX-5 Ex
[  761.860244] mlx5_core 0000:81:00.0 ens1f0: Link up
[  761.880693] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f0: link becomes ready
[  762.059732] mlx5_core 0000:81:00.1 ens1f1: Link up
[  762.234341] :test: unbind vfs of ens1f0
[  762.257825] :test: Change ens1f0 eswitch (0000:81:00.0) mode to switchdev
[  762.291363] :test: unbind vfs of ens1f1
[  762.306914] :test: Change ens1f1 eswitch (0000:81:00.1) mode to switchdev
[  762.309237] mlx5_core 0000:81:00.1: E-Switch: Disable: mode(LEGACY), nvfs(2), active vports(3)
[  763.282598] mlx5_core 0000:81:00.1: E-Switch: Supported tc offload range - chains: 4294967294, prios: 4294967295
[  763.362825] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
[  763.444465] mlx5_core 0000:81:00.1 ens1f1: renamed from eth0
[  763.460088] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
[  763.502586] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
[  763.552429] ens1f1_0: renamed from eth0
[  763.569569] mlx5_core 0000:81:00.1: E-Switch: Enable: mode(OFFLOADS), nvfs(2), active vports(3)
[  763.629694] ens1f1_1: renamed from eth1
[  764.631552] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1_0: link becomes ready
[  764.670841] :test: unbind vfs of ens1f0
[  764.681966] :test: unbind vfs of ens1f1
[  764.726762] mlx5_core 0000:81:00.0 ens1f0: Link up
[  764.766511] mlx5_core 0000:81:00.1 ens1f1: Link up
[  764.797325] :test: Add multipath vxlan encap rule and disable sriov
[  764.798544] :test: config multipath route
[  764.812732] mlx5_core 0000:81:00.0: lag map port 1:2 port 2:2
[  764.874556] mlx5_core 0000:81:00.0: modify lag map port 1:1 port 2:2
[  765.603681] :test: OK
[  765.659048] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1_1: link becomes ready
[  765.675085] :test: verify rule in hw
[  765.694237] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f0: link becomes ready
[  765.711892] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1: link becomes ready
[  766.979230] :test: OK
[  768.125419] :test: OK
[  768.127519] :test: - disable sriov ens1f1
[  768.131160] pci 0000:81:02.2: Removing from iommu group 75
[  768.132646] pci 0000:81:02.3: Removing from iommu group 76
[  769.179749] mlx5_core 0000:81:00.1: E-Switch: Disable: mode(OFFLOADS), nvfs(2), active vports(3)
[  769.455627] mlx5_core 0000:81:00.0: modify lag map port 1:1 port 2:1
[  769.703990] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
[  769.988637] mlx5_core 0000:81:00.1 ens1f1: renamed from eth0
[  769.990022] :test: - disable sriov ens1f0
[  769.994922] pci 0000:81:00.2: Removing from iommu group 73
[  769.997048] pci 0000:81:00.3: Removing from iommu group 74
[  771.035813] mlx5_core 0000:81:00.0: E-Switch: Disable: mode(OFFLOADS), nvfs(2), active vports(3)
[  771.339091] ------------[ cut here ]------------
[  771.340812] WARNING: CPU: 6 PID: 3448 at net/sched/cls_api.c:749 tcf_block_offload_unbind.isra.0+0x5c/0x60
[  771.341728] Modules linked in: act_mirred act_tunnel_key cls_flower dummy vxlan ip6_udp_tunnel udp_tunnel sch_ingress nfsv3 nfs_acl nfs lockd grace fscache tun bridge stp llc sunrpc rdma_ucm rdma_cm iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp mlxfw act_ct nf_flow_table kvm_intel nf_nat kvm nf_conntrack irqbypass crct10dif_pclmul igb crc32_pclmul nf_defrag_ipv6 libcrc32c nf_defrag_ipv4 crc32c_intel ghash_clmulni_intel ptp ipmi_ssif intel_cstate pps_c
ore ses intel_uncore mei_me iTCO_wdt joydev ipmi_si iTCO_vendor_support i2c_i801 enclosure mei ioatdma dca lpc_ich wmi ipmi_devintf pcspkr acpi_power_meter ipmi_msghandler acpi_pad ast i2c_algo_bit drm_vram_helper drm_kms_helper drm_ttm_helper ttm drm mpt3sas raid_class scsi_transport_sas
[  771.347818] CPU: 6 PID: 3448 Comm: test-ecmp-add-v Not tainted 5.7.0+ #1146
[  771.348727] Hardware name: Supermicro SYS-2028TP-DECR/X10DRT-P, BIOS 2.0b 03/30/2017
[  771.349646] RIP: 0010:tcf_block_offload_unbind.isra.0+0x5c/0x60
[  771.350553] Code: 4a fd ff ff 83 f8 a1 74 0e 5b 4c 89 e7 5d 41 5c 41 5d e9 07 93 89 ff 8b 83 a0 00 00 00 8d 50 ff 89 93 a0 00 00 00 85 c0 75 df <0f> 0b eb db 0f 1f 44 00 00 41 57 41 56 41 55 41 89 cd 41 54 49 89
[  771.352420] RSP: 0018:ffffb33144cd3b00 EFLAGS: 00010246
[  771.353353] RAX: 0000000000000000 RBX: ffff8b37cf4b2800 RCX: 0000000000000000
[  771.354294] RDX: 00000000ffffffff RSI: ffff8b3b9aad0000 RDI: ffffffff8d5c6e20
[  771.355245] RBP: ffff8b37eb546948 R08: ffffffffc0b7a348 R09: ffff8b3b9aad0000
[  771.356189] R10: 0000000000000001 R11: ffff8b3ba7a0a1c0 R12: ffff8b37cf4b2850
[  771.357123] R13: ffff8b3b9aad0000 R14: ffff8b37cf4b2820 R15: ffff8b37cf4b2820
[  771.358039] FS:  00007f8a19b6e740(0000) GS:ffff8b3befa00000(0000) knlGS:0000000000000000
[  771.358965] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  771.359885] CR2: 00007f3afb91c1a0 CR3: 000000045133c004 CR4: 00000000001606e0
[  771.360825] Call Trace:
[  771.361764]  __tcf_block_put+0x84/0x150
[  771.362712]  ingress_destroy+0x1b/0x20 [sch_ingress]
[  771.363658]  qdisc_destroy+0x3e/0xc0
[  771.364594]  dev_shutdown+0x7a/0xa5
[  771.365522]  rollback_registered_many+0x20d/0x530
[  771.366458]  ? netdev_upper_dev_unlink+0x15d/0x1c0
[  771.367387]  unregister_netdevice_many.part.0+0xf/0x70
[  771.368310]  vxlan_netdevice_event+0xa4/0x110 [vxlan]
[  771.369454]  notifier_call_chain+0x4c/0x70
[  771.370579]  rollback_registered_many+0x2f5/0x530
[  771.371719]  rollback_registered+0x56/0x90
[  771.372843]  unregister_netdevice_queue+0x73/0xb0
[  771.373982]  unregister_netdev+0x18/0x20
[  771.375168]  mlx5e_vport_rep_unload+0x56/0xc0 [mlx5_core]
[  771.376327]  esw_offloads_disable+0x81/0x90 [mlx5_core]
[  771.377512]  mlx5_eswitch_disable_locked.cold+0xcb/0x1af [mlx5_core]
[  771.378679]  mlx5_eswitch_disable+0x44/0x60 [mlx5_core]
[  771.379822]  mlx5_device_disable_sriov+0xad/0xb0 [mlx5_core]
[  771.380968]  mlx5_core_sriov_configure+0xc1/0xe0 [mlx5_core]
[  771.382087]  sriov_numvfs_store+0xfc/0x130
[  771.383195]  kernfs_fop_write+0xce/0x1b0
[  771.384302]  vfs_write+0xb6/0x1a0
[  771.385410]  ksys_write+0x5f/0xe0
[  771.386500]  do_syscall_64+0x5b/0x1d0
[  771.387569]  entry_SYSCALL_64_after_hwframe+0x44/0xa9

Fixes: 0fdcf78d5973 ("net: use flow_indr_dev_setup_offload()")
Signed-off-by: wenxu <wenxu@ucloud.cn>
---
 net/core/flow_offload.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c
index 6614351..359bd0a 100644
--- a/net/core/flow_offload.c
+++ b/net/core/flow_offload.c
@@ -471,6 +471,9 @@ int flow_indr_dev_setup_offload(struct net_device *dev,
 	__flow_block_indr_binding(bo, dev, data, cleanup);
 	mutex_unlock(&flow_indr_block_lock);
 
+	if (bo->command == FLOW_BLOCK_UNBIND)
+		return 0;
+
 	return list_empty(&bo->cb_list) ? -EOPNOTSUPP : 0;
 }
 EXPORT_SYMBOL(flow_indr_dev_setup_offload);
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list
  2020-06-12 10:08 [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu
@ 2020-06-12 10:08 ` wenxu
  2020-06-12 14:25   ` Vlad Buslov
  2020-06-12 14:18 ` [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu
  1 sibling, 1 reply; 4+ messages in thread
From: wenxu @ 2020-06-12 10:08 UTC (permalink / raw)
  To: netdev; +Cc: davem, pablo, vladbu

From: wenxu <wenxu@ucloud.cn>

When a indr device add in offload success. After the representor
go away. All the flow_block_cb cleanup but miss del form driver
list.

Fixes: 0fdcf78d5973 ("net: use flow_indr_dev_setup_offload()")
Signed-off-by: wenxu <wenxu@ucloud.cn>
---
 drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c        | 1 -
 drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c | 1 -
 drivers/net/ethernet/netronome/nfp/flower/offload.c | 1 -
 net/netfilter/nf_flow_table_offload.c               | 1 +
 net/netfilter/nf_tables_offload.c                   | 1 +
 net/sched/cls_api.c                                 | 1 +
 6 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
index 042c285..536c381 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c
@@ -1932,7 +1932,6 @@ static int bnxt_tc_setup_indr_block(struct net_device *netdev, struct bnxt *bp,
 			return -ENOENT;
 
 		flow_block_cb_remove(block_cb, f);
-		list_del(&block_cb->driver_list);
 		break;
 	default:
 		return -EOPNOTSUPP;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c
index 187f84c..cf53c21 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c
@@ -459,7 +459,6 @@ static void mlx5e_rep_indr_block_unbind(void *cb_priv)
 			return -ENOENT;
 
 		flow_block_cb_remove(block_cb, f);
-		list_del(&block_cb->driver_list);
 		return 0;
 	default:
 		return -EOPNOTSUPP;
diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c
index ca2f01a..c3965af 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/offload.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c
@@ -1701,7 +1701,6 @@ void nfp_flower_setup_indr_tc_release(void *cb_priv)
 			return -ENOENT;
 
 		flow_block_cb_remove(block_cb, f);
-		list_del(&block_cb->driver_list);
 		return 0;
 	default:
 		return -EOPNOTSUPP;
diff --git a/net/netfilter/nf_flow_table_offload.c b/net/netfilter/nf_flow_table_offload.c
index 62651e6..5fff1e0 100644
--- a/net/netfilter/nf_flow_table_offload.c
+++ b/net/netfilter/nf_flow_table_offload.c
@@ -950,6 +950,7 @@ static void nf_flow_table_indr_cleanup(struct flow_block_cb *block_cb)
 	nf_flow_table_gc_cleanup(flowtable, dev);
 	down_write(&flowtable->flow_block_lock);
 	list_del(&block_cb->list);
+	list_del(&block_cb->driver_list);
 	flow_block_cb_free(block_cb);
 	up_write(&flowtable->flow_block_lock);
 }
diff --git a/net/netfilter/nf_tables_offload.c b/net/netfilter/nf_tables_offload.c
index 185fc82..e2f54d8 100644
--- a/net/netfilter/nf_tables_offload.c
+++ b/net/netfilter/nf_tables_offload.c
@@ -226,6 +226,7 @@ static int nft_flow_offload_unbind(struct flow_block_offload *bo,
 
 	list_for_each_entry_safe(block_cb, next, &bo->cb_list, list) {
 		list_del(&block_cb->list);
+		list_del(&block_cb->driver_list);
 		flow_block_cb_free(block_cb);
 	}
 
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index a00a203..f00fcaf 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -1487,6 +1487,7 @@ static void tcf_block_unbind(struct tcf_block *block,
 					    tcf_block_offload_in_use(block),
 					    NULL);
 		list_del(&block_cb->list);
+		list_del(&block_cb->driver_list);
 		flow_block_cb_free(block_cb);
 		if (!bo->unlocked_driver_cb)
 			block->lockeddevcnt--;
-- 
1.8.3.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload
  2020-06-12 10:08 [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu
  2020-06-12 10:08 ` [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list wenxu
@ 2020-06-12 14:18 ` wenxu
  1 sibling, 0 replies; 4+ messages in thread
From: wenxu @ 2020-06-12 14:18 UTC (permalink / raw)
  To: netdev; +Cc: davem, pablo, vladbu

Please drop this series.

Thank you.

在 2020/6/12 18:08, wenxu@ucloud.cn 写道:
> From: wenxu <wenxu@ucloud.cn>
>
> block->nooffloaddevcnt warning with following dmesg log:
>
> When a indr device add in offload success. The block->nooffloaddevcnt
> always zero. But When all the representors go away. All the flow_block_cb
> cleanup. Then remove the indr device, The __tcf_block_put call
> flow_indr_dev_setup_offload with FLOW_BLOCK_UNBIND will always return
> -EOPNOTSUPP And make the warning comes out.
>
> [  760.667058] #####################################################
> [  760.668186] ## TEST test-ecmp-add-vxlan-encap-disable-sriov.sh ##
> [  760.669179] #####################################################
> [  761.780655] :test: Fedora 30 (Thirty)
> [  761.783794] :test: Linux reg-r-vrt-018-180 5.7.0+
> [  761.822890] :test: NIC ens1f0 FW 16.26.6000 PCI 0000:81:00.0 DEVICE 0x1019 ConnectX-5 Ex
> [  761.860244] mlx5_core 0000:81:00.0 ens1f0: Link up
> [  761.880693] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f0: link becomes ready
> [  762.059732] mlx5_core 0000:81:00.1 ens1f1: Link up
> [  762.234341] :test: unbind vfs of ens1f0
> [  762.257825] :test: Change ens1f0 eswitch (0000:81:00.0) mode to switchdev
> [  762.291363] :test: unbind vfs of ens1f1
> [  762.306914] :test: Change ens1f1 eswitch (0000:81:00.1) mode to switchdev
> [  762.309237] mlx5_core 0000:81:00.1: E-Switch: Disable: mode(LEGACY), nvfs(2), active vports(3)
> [  763.282598] mlx5_core 0000:81:00.1: E-Switch: Supported tc offload range - chains: 4294967294, prios: 4294967295
> [  763.362825] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
> [  763.444465] mlx5_core 0000:81:00.1 ens1f1: renamed from eth0
> [  763.460088] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
> [  763.502586] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
> [  763.552429] ens1f1_0: renamed from eth0
> [  763.569569] mlx5_core 0000:81:00.1: E-Switch: Enable: mode(OFFLOADS), nvfs(2), active vports(3)
> [  763.629694] ens1f1_1: renamed from eth1
> [  764.631552] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1_0: link becomes ready
> [  764.670841] :test: unbind vfs of ens1f0
> [  764.681966] :test: unbind vfs of ens1f1
> [  764.726762] mlx5_core 0000:81:00.0 ens1f0: Link up
> [  764.766511] mlx5_core 0000:81:00.1 ens1f1: Link up
> [  764.797325] :test: Add multipath vxlan encap rule and disable sriov
> [  764.798544] :test: config multipath route
> [  764.812732] mlx5_core 0000:81:00.0: lag map port 1:2 port 2:2
> [  764.874556] mlx5_core 0000:81:00.0: modify lag map port 1:1 port 2:2
> [  765.603681] :test: OK
> [  765.659048] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1_1: link becomes ready
> [  765.675085] :test: verify rule in hw
> [  765.694237] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f0: link becomes ready
> [  765.711892] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1: link becomes ready
> [  766.979230] :test: OK
> [  768.125419] :test: OK
> [  768.127519] :test: - disable sriov ens1f1
> [  768.131160] pci 0000:81:02.2: Removing from iommu group 75
> [  768.132646] pci 0000:81:02.3: Removing from iommu group 76
> [  769.179749] mlx5_core 0000:81:00.1: E-Switch: Disable: mode(OFFLOADS), nvfs(2), active vports(3)
> [  769.455627] mlx5_core 0000:81:00.0: modify lag map port 1:1 port 2:1
> [  769.703990] mlx5_core 0000:81:00.1: MLX5E: StrdRq(1) RqSz(8) StrdSz(2048) RxCqeCmprss(0)
> [  769.988637] mlx5_core 0000:81:00.1 ens1f1: renamed from eth0
> [  769.990022] :test: - disable sriov ens1f0
> [  769.994922] pci 0000:81:00.2: Removing from iommu group 73
> [  769.997048] pci 0000:81:00.3: Removing from iommu group 74
> [  771.035813] mlx5_core 0000:81:00.0: E-Switch: Disable: mode(OFFLOADS), nvfs(2), active vports(3)
> [  771.339091] ------------[ cut here ]------------
> [  771.340812] WARNING: CPU: 6 PID: 3448 at net/sched/cls_api.c:749 tcf_block_offload_unbind.isra.0+0x5c/0x60
> [  771.341728] Modules linked in: act_mirred act_tunnel_key cls_flower dummy vxlan ip6_udp_tunnel udp_tunnel sch_ingress nfsv3 nfs_acl nfs lockd grace fscache tun bridge stp llc sunrpc rdma_ucm rdma_cm iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp mlxfw act_ct nf_flow_table kvm_intel nf_nat kvm nf_conntrack irqbypass crct10dif_pclmul igb crc32_pclmul nf_defrag_ipv6 libcrc32c nf_defrag_ipv4 crc32c_intel ghash_clmulni_intel ptp ipmi_ssif intel_cstate pps_c
> ore ses intel_uncore mei_me iTCO_wdt joydev ipmi_si iTCO_vendor_support i2c_i801 enclosure mei ioatdma dca lpc_ich wmi ipmi_devintf pcspkr acpi_power_meter ipmi_msghandler acpi_pad ast i2c_algo_bit drm_vram_helper drm_kms_helper drm_ttm_helper ttm drm mpt3sas raid_class scsi_transport_sas
> [  771.347818] CPU: 6 PID: 3448 Comm: test-ecmp-add-v Not tainted 5.7.0+ #1146
> [  771.348727] Hardware name: Supermicro SYS-2028TP-DECR/X10DRT-P, BIOS 2.0b 03/30/2017
> [  771.349646] RIP: 0010:tcf_block_offload_unbind.isra.0+0x5c/0x60
> [  771.350553] Code: 4a fd ff ff 83 f8 a1 74 0e 5b 4c 89 e7 5d 41 5c 41 5d e9 07 93 89 ff 8b 83 a0 00 00 00 8d 50 ff 89 93 a0 00 00 00 85 c0 75 df <0f> 0b eb db 0f 1f 44 00 00 41 57 41 56 41 55 41 89 cd 41 54 49 89
> [  771.352420] RSP: 0018:ffffb33144cd3b00 EFLAGS: 00010246
> [  771.353353] RAX: 0000000000000000 RBX: ffff8b37cf4b2800 RCX: 0000000000000000
> [  771.354294] RDX: 00000000ffffffff RSI: ffff8b3b9aad0000 RDI: ffffffff8d5c6e20
> [  771.355245] RBP: ffff8b37eb546948 R08: ffffffffc0b7a348 R09: ffff8b3b9aad0000
> [  771.356189] R10: 0000000000000001 R11: ffff8b3ba7a0a1c0 R12: ffff8b37cf4b2850
> [  771.357123] R13: ffff8b3b9aad0000 R14: ffff8b37cf4b2820 R15: ffff8b37cf4b2820
> [  771.358039] FS:  00007f8a19b6e740(0000) GS:ffff8b3befa00000(0000) knlGS:0000000000000000
> [  771.358965] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [  771.359885] CR2: 00007f3afb91c1a0 CR3: 000000045133c004 CR4: 00000000001606e0
> [  771.360825] Call Trace:
> [  771.361764]  __tcf_block_put+0x84/0x150
> [  771.362712]  ingress_destroy+0x1b/0x20 [sch_ingress]
> [  771.363658]  qdisc_destroy+0x3e/0xc0
> [  771.364594]  dev_shutdown+0x7a/0xa5
> [  771.365522]  rollback_registered_many+0x20d/0x530
> [  771.366458]  ? netdev_upper_dev_unlink+0x15d/0x1c0
> [  771.367387]  unregister_netdevice_many.part.0+0xf/0x70
> [  771.368310]  vxlan_netdevice_event+0xa4/0x110 [vxlan]
> [  771.369454]  notifier_call_chain+0x4c/0x70
> [  771.370579]  rollback_registered_many+0x2f5/0x530
> [  771.371719]  rollback_registered+0x56/0x90
> [  771.372843]  unregister_netdevice_queue+0x73/0xb0
> [  771.373982]  unregister_netdev+0x18/0x20
> [  771.375168]  mlx5e_vport_rep_unload+0x56/0xc0 [mlx5_core]
> [  771.376327]  esw_offloads_disable+0x81/0x90 [mlx5_core]
> [  771.377512]  mlx5_eswitch_disable_locked.cold+0xcb/0x1af [mlx5_core]
> [  771.378679]  mlx5_eswitch_disable+0x44/0x60 [mlx5_core]
> [  771.379822]  mlx5_device_disable_sriov+0xad/0xb0 [mlx5_core]
> [  771.380968]  mlx5_core_sriov_configure+0xc1/0xe0 [mlx5_core]
> [  771.382087]  sriov_numvfs_store+0xfc/0x130
> [  771.383195]  kernfs_fop_write+0xce/0x1b0
> [  771.384302]  vfs_write+0xb6/0x1a0
> [  771.385410]  ksys_write+0x5f/0xe0
> [  771.386500]  do_syscall_64+0x5b/0x1d0
> [  771.387569]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
>
> Fixes: 0fdcf78d5973 ("net: use flow_indr_dev_setup_offload()")
> Signed-off-by: wenxu <wenxu@ucloud.cn>
> ---
>   net/core/flow_offload.c | 3 +++
>   1 file changed, 3 insertions(+)
>
> diff --git a/net/core/flow_offload.c b/net/core/flow_offload.c
> index 6614351..359bd0a 100644
> --- a/net/core/flow_offload.c
> +++ b/net/core/flow_offload.c
> @@ -471,6 +471,9 @@ int flow_indr_dev_setup_offload(struct net_device *dev,
>   	__flow_block_indr_binding(bo, dev, data, cleanup);
>   	mutex_unlock(&flow_indr_block_lock);
>   
> +	if (bo->command == FLOW_BLOCK_UNBIND)
> +		return 0;
> +
>   	return list_empty(&bo->cb_list) ? -EOPNOTSUPP : 0;
>   }
>   EXPORT_SYMBOL(flow_indr_dev_setup_offload);

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list
  2020-06-12 10:08 ` [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list wenxu
@ 2020-06-12 14:25   ` Vlad Buslov
  0 siblings, 0 replies; 4+ messages in thread
From: Vlad Buslov @ 2020-06-12 14:25 UTC (permalink / raw)
  To: wenxu; +Cc: netdev, davem, pablo, vladbu


On Fri 12 Jun 2020 at 13:08, wenxu@ucloud.cn wrote:
> From: wenxu <wenxu@ucloud.cn>
>
> When a indr device add in offload success. After the representor
> go away. All the flow_block_cb cleanup but miss del form driver
> list.
>
> Fixes: 0fdcf78d5973 ("net: use flow_indr_dev_setup_offload()")
> Signed-off-by: wenxu <wenxu@ucloud.cn>
> ---

Hi wenxu,

I applied this series on top of your other series of fixes that starts
with "[PATCH net v3 1/2] flow_offload: fix incorrect cleanup for
indirect flow_blocks" and get following list manipulation warnings in
most of our tests:

[  538.776527] ######################################
[  538.776848] ## TEST test-devlink-inline-mode.sh ##
[  538.777158] ######################################
[  539.548708] IPv6: ADDRCONF(NETDEV_CHANGE): ens1f1: link becomes ready
[  539.784948] :test: Fedora 30 (Thirty)
[  539.787047] :test: Linux reg-r-vrt-018-180 5.7.0+
[  539.827011] :test: NIC ens1f0 FW 16.27.6008 PCI 0000:81:00.0 DEVICE 0x1019 ConnectX-5 Ex
[  539.832092] ------------[ cut here ]------------
[  539.832120] list_del corruption, ffff968f138f8280->next is LIST_POISON1 (dead000000000100)
[  539.832179] WARNING: CPU: 2 PID: 2712 at lib/list_debug.c:45 __list_del_entry_valid+0x4b/0x90
[  539.832216] Modules linked in: sch_ingress nfsv3 nfs_acl nfs lockd grace fscache tun bridge stp llc sunrpc rdma_ucm rdma_cm iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel mlxfw act_ct nf_flow_table kvm nf_nat nf_conntrack igb irqbypass nf_defrag_ipv6 libcrc32c nf_defrag_ipv4 crct10dif_pclmul ptp crc32_pclmul ses crc32c_intel pps_core ghash_clmulni_intel iTCO_wdt mei_me joydev ipmi_ssif iTCO_vendor_support intel_cstate mei ipmi_si ioatdma pcsp
kr wmi enclosure lpc_ich intel_uncore dca i2c_i801 acpi_power_meter ipmi_devintf ipmi_msghandler acpi_pad ast i2c_algo_bit drm_vram_helper drm_kms_helper drm_ttm_helper ttm drm mpt3sas raid_class scsi_transport_sas
[  539.832506] CPU: 2 PID: 2712 Comm: tc Not tainted 5.7.0+ #1153
[  539.832532] Hardware name: Supermicro SYS-2028TP-DECR/X10DRT-P, BIOS 2.0b 03/30/2017
[  539.832569] RIP: 0010:__list_del_entry_valid+0x4b/0x90
[  539.832594] Code: 39 c0 74 2b 49 8b 30 48 39 fe 75 3a 48 8b 52 08 48 39 f2 75 48 b8 01 00 00 00 c3 48 89 fe 48 c7 c7 50 b2 19 ab e8 47 b3 bd ff <0f> 0b 31 c0 c3 48 89 fe 4c 89 c2 48 c7 c7 88 b2 19 ab e8 30 b3 bd
[  539.832669] RSP: 0018:ffffb132041e3878 EFLAGS: 00010286
[  539.833836] RAX: 0000000000000000 RBX: ffffb132041e38d8 RCX: 0000000000000027
[  539.834960] RDX: 0000000000000027 RSI: 0000000000000092 RDI: ffff968f2fa99d88
[  539.836082] RBP: ffff968f10722000 R08: ffff968f2fa99d80 R09: 00000000000005b3
[  539.837213] R10: 0000000000000001 R11: ffffffffaaedecc0 R12: dead000000000122
[  539.838317] R13: dead000000000100 R14: ffff968f138f8280 R15: ffff968f138f8290
[  539.839397] FS:  00007f6d641b3480(0000) GS:ffff968f2fa80000(0000) knlGS:0000000000000000
[  539.840481] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  539.841565] CR2: 0000000000480360 CR3: 000000044fbfe003 CR4: 00000000001606e0
[  539.842671] Call Trace:
[  539.843787]  tcf_block_unbind+0xad/0x110
[  539.844891]  tcf_block_offload_cmd.isra.0+0x105/0x280
[  539.845995]  tcf_block_offload_unbind.isra.0+0x36/0x60
[  539.847087]  __tcf_block_put+0x84/0x150
[  539.848178]  ingress_destroy+0x1b/0x20 [sch_ingress]
[  539.849266]  qdisc_destroy+0x3e/0xc0
[  539.850346]  qdisc_graft+0x415/0x510
[  539.851426]  tc_get_qdisc+0x1c9/0x300
[  539.852508]  rtnetlink_rcv_msg+0x2b0/0x360
[  539.853599]  ? copyout+0x22/0x30
[  539.854680]  ? _copy_to_iter+0xa1/0x410
[  539.855742]  ? _cond_resched+0x15/0x30
[  539.856784]  ? rtnl_calcit.isra.0+0x110/0x110
[  539.857818]  netlink_rcv_skb+0x49/0x110
[  539.858842]  netlink_unicast+0x191/0x230
[  539.859857]  netlink_sendmsg+0x243/0x480
[  539.860870]  sock_sendmsg+0x5e/0x60
[  539.861875]  ____sys_sendmsg+0x1f3/0x260
[  539.862881]  ? copy_msghdr_from_user+0x5c/0x90
[  539.863889]  ? ____sys_recvmsg+0xa7/0x180
[  539.864887]  ___sys_sendmsg+0x81/0xc0
[  539.865875]  ? ___sys_recvmsg+0x8d/0xc0
[  539.866860]  ? handle_mm_fault+0x117b/0x1e00
[  539.867837]  __sys_sendmsg+0x59/0xa0
[  539.868813]  do_syscall_64+0x5b/0x1d0
[  539.869754]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  539.870686] RIP: 0033:0x7f6d643797b8
[  539.871591] Code: 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 48 8d 05 65 8f 0c 00 8b 00 85 c0 75 17 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 89 54
[  539.873428] RSP: 002b:00007ffdc0eb23e8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  539.874325] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f6d643797b8
[  539.875202] RDX: 0000000000000000 RSI: 00007ffdc0eb2460 RDI: 0000000000000003
[  539.876057] RBP: 000000005ee37948 R08: 0000000000000001 R09: 0000000000d5c9c0
[  539.876889] R10: 0000000000404fa8 R11: 0000000000000246 R12: 0000000000000001
[  539.877704] R13: 00007ffdc0ec26b0 R14: 0000000000000000 R15: 00000000004866a0
[  539.878527] ---[ end trace 046f2dd1361dc9d6 ]---
[  539.901351] ------------[ cut here ]------------
[  539.901946] list_del corruption, ffff968f0467ef00->next is LIST_POISON1 (dead000000000100)
[  539.902535] WARNING: CPU: 13 PID: 2717 at lib/list_debug.c:45 __list_del_entry_valid+0x4b/0x90
[  539.903119] Modules linked in: sch_ingress nfsv3 nfs_acl nfs lockd grace fscache tun bridge stp llc sunrpc rdma_ucm rdma_cm iw_cm ib_cm mlx5_ib ib_uverbs ib_core mlx5_core intel_rapl_msr intel_rapl_common sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel mlxfw act_ct nf_flow_table kvm nf_nat nf_conntrack igb irqbypass nf_defrag_ipv6 libcrc32c nf_defrag_ipv4 crct10dif_pclmul ptp crc32_pclmul ses crc32c_intel pps_core ghash_clmulni_intel iTCO_wdt mei_me joydev ipmi_ssif iTCO_vendor_support intel_cstate mei ipmi_si ioatdma pcsp
kr wmi enclosure lpc_ich intel_uncore dca i2c_i801 acpi_power_meter ipmi_devintf ipmi_msghandler acpi_pad ast i2c_algo_bit drm_vram_helper drm_kms_helper drm_ttm_helper ttm drm mpt3sas raid_class scsi_transport_sas
[  539.907012] CPU: 13 PID: 2717 Comm: tc Tainted: G        W         5.7.0+ #1153
[  539.907695] Hardware name: Supermicro SYS-2028TP-DECR/X10DRT-P, BIOS 2.0b 03/30/2017
[  539.908382] RIP: 0010:__list_del_entry_valid+0x4b/0x90
[  539.909068] Code: 39 c0 74 2b 49 8b 30 48 39 fe 75 3a 48 8b 52 08 48 39 f2 75 48 b8 01 00 00 00 c3 48 89 fe 48 c7 c7 50 b2 19 ab e8 47 b3 bd ff <0f> 0b 31 c0 c3 48 89 fe 4c 89 c2 48 c7 c7 88 b2 19 ab e8 30 b3 bd
[  539.910524] RSP: 0018:ffffb1320421b878 EFLAGS: 00010286
[  539.911261] RAX: 0000000000000000 RBX: ffffb1320421b8d8 RCX: 0000000000000027
[  539.912010] RDX: 0000000000000027 RSI: 0000000000000092 RDI: ffff968f2fbd9d88
[  539.912759] RBP: ffff968f17325000 R08: ffff968f2fbd9d80 R09: 00000000000005e8
[  539.913533] R10: 0000000000000001 R11: ffffffffaaedecc0 R12: dead000000000122
[  539.914296] R13: dead000000000100 R14: ffff968f0467ef00 R15: ffff968f0467ef10
[  539.915063] FS:  00007ff65a1d6480(0000) GS:ffff968f2fbc0000(0000) knlGS:0000000000000000
[  539.915841] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  539.916625] CR2: 0000000000480360 CR3: 000000044f852005 CR4: 00000000001606e0
[  539.917422] Call Trace:
[  539.918221]  tcf_block_unbind+0xad/0x110
[  539.919023]  tcf_block_offload_cmd.isra.0+0x105/0x280
[  539.919828]  tcf_block_offload_unbind.isra.0+0x36/0x60
[  539.920635]  __tcf_block_put+0x84/0x150
[  539.921446]  ingress_destroy+0x1b/0x20 [sch_ingress]
[  539.922259]  qdisc_destroy+0x3e/0xc0
[  539.923068]  qdisc_graft+0x415/0x510
[  539.923891]  tc_get_qdisc+0x1c9/0x300
[  539.924699]  rtnetlink_rcv_msg+0x2b0/0x360
[  539.925509]  ? copyout+0x22/0x30
[  539.926314]  ? _copy_to_iter+0xa1/0x410
[  539.927119]  ? _cond_resched+0x15/0x30
[  539.927923]  ? rtnl_calcit.isra.0+0x110/0x110
[  539.928726]  netlink_rcv_skb+0x49/0x110
[  539.929524]  netlink_unicast+0x191/0x230
[  539.930301]  netlink_sendmsg+0x243/0x480
[  539.931058]  sock_sendmsg+0x5e/0x60
[  539.931801]  ____sys_sendmsg+0x1f3/0x260
[  539.932537]  ? copy_msghdr_from_user+0x5c/0x90
[  539.933283]  ? ____sys_recvmsg+0xa7/0x180
[  539.934013]  ___sys_sendmsg+0x81/0xc0
[  539.934743]  ? ___sys_recvmsg+0x8d/0xc0
[  539.935473]  ? handle_mm_fault+0x117b/0x1e00
[  539.936194]  __sys_sendmsg+0x59/0xa0
[  539.936915]  do_syscall_64+0x5b/0x1d0
[  539.937618]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[  539.938317] RIP: 0033:0x7ff65a39c7b8
[  539.938994] Code: 89 02 48 c7 c0 ff ff ff ff eb bb 0f 1f 80 00 00 00 00 f3 0f 1e fa 48 8d 05 65 8f 0c 00 8b 00 85 c0 75 17 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 48 83 ec 28 89 54
[  539.940367] RSP: 002b:00007fffba61c6a8 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
[  539.941038] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007ff65a39c7b8
[  539.941694] RDX: 0000000000000000 RSI: 00007fffba61c720 RDI: 0000000000000003
[  539.942331] RBP: 000000005ee37949 R08: 0000000000000001 R09: 00000000012b89c0
[  539.942951] R10: 0000000000404fa8 R11: 0000000000000246 R12: 0000000000000001
[  539.943576] R13: 00007fffba62c970 R14: 0000000000000000 R15: 00000000004866a0
[  539.944179] ---[ end trace 046f2dd1361dc9d7 ]---

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-06-12 14:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-12 10:08 [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu
2020-06-12 10:08 ` [PATCH net 2/2] flow_offload: fix the list_del corruption in the driver list wenxu
2020-06-12 14:25   ` Vlad Buslov
2020-06-12 14:18 ` [PATCH net 1/2] flow_offload: return zero for FLOW_BLOCK_UNBIND type flow_indr_dev_setup_offload wenxu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).