Commit graph

305 commits

Author SHA1 Message Date
Mark Bloch
664ac69e67 net/mlx5: fs, lock FTE when checking if active
[ Upstream commit 9ca314419930f9135727e39d77e66262d5f7bef6 ]

The referenced commits introduced a two-step process for deleting FTEs:

- Lock the FTE, delete it from hardware, set the hardware deletion function
  to NULL and unlock the FTE.
- Lock the parent flow group, delete the software copy of the FTE, and
  remove it from the xarray.

However, this approach encounters a race condition if a rule with the same
match value is added simultaneously. In this scenario, fs_core may set the
hardware deletion function to NULL prematurely, causing a panic during
subsequent rule deletions.

To prevent this, ensure the active flag of the FTE is checked under a lock,
which will prevent the fs_core layer from attaching a new steering rule to
an FTE that is in the process of deletion.

[  438.967589] MOSHE: 2496 mlx5_del_flow_rules del_hw_func
[  438.968205] ------------[ cut here ]------------
[  438.968654] refcount_t: decrement hit 0; leaking memory.
[  438.969249] WARNING: CPU: 0 PID: 8957 at lib/refcount.c:31 refcount_warn_saturate+0xfb/0x110
[  438.970054] Modules linked in: act_mirred cls_flower act_gact sch_ingress openvswitch nsh mlx5_vdpa vringh vhost_iotlb vdpa mlx5_ib mlx5_core xt_conntrack xt_MASQUERADE nf_conntrack_netlink nfnetlink xt_addrtype iptable_nat nf_nat br_netfilter rpcsec_gss_krb5 auth_rpcgss oid_registry overlay rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi ib_umad rdma_cm ib_ipoib iw_cm ib_cm ib_uverbs ib_core zram zsmalloc fuse [last unloaded: cls_flower]
[  438.973288] CPU: 0 UID: 0 PID: 8957 Comm: tc Not tainted 6.12.0-rc1+ #8
[  438.973888] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
[  438.974874] RIP: 0010:refcount_warn_saturate+0xfb/0x110
[  438.975363] Code: 40 66 3b 82 c6 05 16 e9 4d 01 01 e8 1f 7c a0 ff 0f 0b c3 cc cc cc cc 48 c7 c7 10 66 3b 82 c6 05 fd e8 4d 01 01 e8 05 7c a0 ff <0f> 0b c3 cc cc cc cc 66 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 90
[  438.976947] RSP: 0018:ffff888124a53610 EFLAGS: 00010286
[  438.977446] RAX: 0000000000000000 RBX: ffff888119d56de0 RCX: 0000000000000000
[  438.978090] RDX: ffff88852c828700 RSI: ffff88852c81b3c0 RDI: ffff88852c81b3c0
[  438.978721] RBP: ffff888120fa0e88 R08: 0000000000000000 R09: ffff888124a534b0
[  438.979353] R10: 0000000000000001 R11: 0000000000000001 R12: ffff888119d56de0
[  438.979979] R13: ffff888120fa0ec0 R14: ffff888120fa0ee8 R15: ffff888119d56de0
[  438.980607] FS:  00007fe6dcc0f800(0000) GS:ffff88852c800000(0000) knlGS:0000000000000000
[  438.983984] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  438.984544] CR2: 00000000004275e0 CR3: 0000000186982001 CR4: 0000000000372eb0
[  438.985205] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  438.985842] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
[  438.986507] Call Trace:
[  438.986799]  <TASK>
[  438.987070]  ? __warn+0x7d/0x110
[  438.987426]  ? refcount_warn_saturate+0xfb/0x110
[  438.987877]  ? report_bug+0x17d/0x190
[  438.988261]  ? prb_read_valid+0x17/0x20
[  438.988659]  ? handle_bug+0x53/0x90
[  438.989054]  ? exc_invalid_op+0x14/0x70
[  438.989458]  ? asm_exc_invalid_op+0x16/0x20
[  438.989883]  ? refcount_warn_saturate+0xfb/0x110
[  438.990348]  mlx5_del_flow_rules+0x2f7/0x340 [mlx5_core]
[  438.990932]  __mlx5_eswitch_del_rule+0x49/0x170 [mlx5_core]
[  438.991519]  ? mlx5_lag_is_sriov+0x3c/0x50 [mlx5_core]
[  438.992054]  ? xas_load+0x9/0xb0
[  438.992407]  mlx5e_tc_rule_unoffload+0x45/0xe0 [mlx5_core]
[  438.993037]  mlx5e_tc_del_fdb_flow+0x2a6/0x2e0 [mlx5_core]
[  438.993623]  mlx5e_flow_put+0x29/0x60 [mlx5_core]
[  438.994161]  mlx5e_delete_flower+0x261/0x390 [mlx5_core]
[  438.994728]  tc_setup_cb_destroy+0xb9/0x190
[  438.995150]  fl_hw_destroy_filter+0x94/0xc0 [cls_flower]
[  438.995650]  fl_change+0x11a4/0x13c0 [cls_flower]
[  438.996105]  tc_new_tfilter+0x347/0xbc0
[  438.996503]  ? ___slab_alloc+0x70/0x8c0
[  438.996929]  rtnetlink_rcv_msg+0xf9/0x3e0
[  438.997339]  ? __netlink_sendskb+0x4c/0x70
[  438.997751]  ? netlink_unicast+0x286/0x2d0
[  438.998171]  ? __pfx_rtnetlink_rcv_msg+0x10/0x10
[  438.998625]  netlink_rcv_skb+0x54/0x100
[  438.999020]  netlink_unicast+0x203/0x2d0
[  438.999421]  netlink_sendmsg+0x1e4/0x420
[  438.999820]  __sock_sendmsg+0xa1/0xb0
[  439.000203]  ____sys_sendmsg+0x207/0x2a0
[  439.000600]  ? copy_msghdr_from_user+0x6d/0xa0
[  439.001072]  ___sys_sendmsg+0x80/0xc0
[  439.001459]  ? ___sys_recvmsg+0x8b/0xc0
[  439.001848]  ? generic_update_time+0x4d/0x60
[  439.002282]  __sys_sendmsg+0x51/0x90
[  439.002658]  do_syscall_64+0x50/0x110
[  439.003040]  entry_SYSCALL_64_after_hwframe+0x76/0x7e

Fixes: 718ce4d601db ("net/mlx5: Consolidate update FTE for all removal changes")
Fixes: cefc23554fc2 ("net/mlx5: Fix FTE cleanup")
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Maor Gottlieb <maorg@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20241107183527.676877-4-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-12-17 13:20:50 +01:00
Johan Jonker
062aa38d5b net: arc: fix the device for dma_map_single/dma_unmap_single
[ Upstream commit 71803c1dfa29e0d13b99e48fda11107cc8caebc7 ]

The ndev->dev and pdev->dev aren't the same device, use ndev->dev.parent
which has dma_mask, ndev->dev.parent is just pdev->dev.
Or it would cause the following issue:

[   39.933526] ------------[ cut here ]------------
[   39.938414] WARNING: CPU: 1 PID: 501 at kernel/dma/mapping.c:149 dma_map_page_attrs+0x90/0x1f8

Fixes: f959dcd6ddfd ("dma-direct: Fix potential NULL pointer dereference")
Signed-off-by: David Wu <david.wu@rock-chips.com>
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-30 02:33:22 +01:00
Peiyang Wang
4152c38410 net: hns3: fix kernel crash when uninstalling driver
[ Upstream commit df3dff8ab6d79edc942464999d06fbaedf8cdd18 ]

When the driver is uninstalled and the VF is disabled concurrently, a
kernel crash occurs. The reason is that the two actions call function
pci_disable_sriov(). The num_VFs is checked to determine whether to
release the corresponding resources. During the second calling, num_VFs
is not 0 and the resource release function is called. However, the
corresponding resource has been released during the first invoking.
Therefore, the problem occurs:

[15277.839633][T50670] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020
...
[15278.131557][T50670] Call trace:
[15278.134686][T50670]  klist_put+0x28/0x12c
[15278.138682][T50670]  klist_del+0x14/0x20
[15278.142592][T50670]  device_del+0xbc/0x3c0
[15278.146676][T50670]  pci_remove_bus_device+0x84/0x120
[15278.151714][T50670]  pci_stop_and_remove_bus_device+0x6c/0x80
[15278.157447][T50670]  pci_iov_remove_virtfn+0xb4/0x12c
[15278.162485][T50670]  sriov_disable+0x50/0x11c
[15278.166829][T50670]  pci_disable_sriov+0x24/0x30
[15278.171433][T50670]  hnae3_unregister_ae_algo_prepare+0x60/0x90 [hnae3]
[15278.178039][T50670]  hclge_exit+0x28/0xd0 [hclge]
[15278.182730][T50670]  __se_sys_delete_module.isra.0+0x164/0x230
[15278.188550][T50670]  __arm64_sys_delete_module+0x1c/0x30
[15278.193848][T50670]  invoke_syscall+0x50/0x11c
[15278.198278][T50670]  el0_svc_common.constprop.0+0x158/0x164
[15278.203837][T50670]  do_el0_svc+0x34/0xcc
[15278.207834][T50670]  el0_svc+0x20/0x30

For details, see the following figure.

     rmmod hclge              disable VFs
----------------------------------------------------
hclge_exit()            sriov_numvfs_store()
  ...                     device_lock()
  pci_disable_sriov()     hns3_pci_sriov_configure()
                            pci_disable_sriov()
                              sriov_disable()
    sriov_disable()             if !num_VFs :
      if !num_VFs :               return;
        return;                 sriov_del_vfs()
      sriov_del_vfs()             ...
        ...                       klist_put()
        klist_put()               ...
        ...                     num_VFs = 0;
      num_VFs = 0;        device_unlock();

In this patch, when driver is removing, we get the device_lock()
to protect num_VFs, just like sriov_numvfs_store().

Fixes: 0dd8a25f355b ("net: hns3: disable sriov before unload hclge layer")
Signed-off-by: Peiyang Wang <wangpeiyang1@huawei.com>
Signed-off-by: Jijie Shao <shaojijie@huawei.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20241101091507.3644584-1-shaojijie@huawei.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-30 02:33:22 +01:00
Wei Fang
a704919ef0 net: enetc: set MAC address to the VF net_device
[ Upstream commit badccd49b93bb945bf4e5cc8707db67cdc5e27e5 ]

The MAC address of VF can be configured through the mailbox mechanism of
ENETC, but the previous implementation forgot to set the MAC address in
net_device, resulting in the SMAC of the sent frames still being the old
MAC address. Since the MAC address in the hardware has been changed, Rx
cannot receive frames with the DMAC address as the new MAC address. The
most obvious phenomenon is that after changing the MAC address, we can
see that the MAC address of eno0vf0 has not changed through the "ifconfig
eno0vf0" command and the IP address cannot be obtained .

root@ls1028ardb:~# ifconfig eno0vf0 down
root@ls1028ardb:~# ifconfig eno0vf0 hw ether 00:04:9f:3a:4d:56 up
root@ls1028ardb:~# ifconfig eno0vf0
eno0vf0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 66:36:2c:3b:87:76  txqueuelen 1000  (Ethernet)
        RX packets 794  bytes 69239 (69.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 11  bytes 2226 (2.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Fixes: beb74ac878c8 ("enetc: Add vf to pf messaging support")
Signed-off-by: Wei Fang <wei.fang@nxp.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Link: https://patch.msgid.link/20241029090406.841836-1-wei.fang@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-30 02:33:22 +01:00
Ksawlii
a5b7b870fc Revert "net: fec: Refactor: #define magic constants"
This reverts commit 64636f4e88.
2024-11-24 00:23:56 +01:00
Ksawlii
e7b1ec68bc Revert "net: fec: Fix FEC_ECR_EN1588 being cleared on link-down"
This reverts commit 132969266d.
2024-11-24 00:23:56 +01:00
Ksawlii
32d9b82df9 Revert "net: stmmac: Correct byte order of perfect_match"
This reverts commit 4e35d4a08d.
2024-11-24 00:23:55 +01:00
Ksawlii
eb36756b64 Revert "net/mlx5e: Add a check for the return value from mlx5_port_set_eth_ptys"
This reverts commit babb23917f.
2024-11-24 00:23:55 +01:00
Ksawlii
5c2a1132c9 Revert "net: fec: Stop PPS on driver remove"
This reverts commit e328279c90.
2024-11-24 00:23:55 +01:00
Ksawlii
0b80835234 Revert "net/mlx5e: Correctly report errors for ethtool rx flows"
This reverts commit a1624526b7.
2024-11-24 00:23:54 +01:00
Ksawlii
11596bfd09 Revert "net: axienet: Fix register defines comment description"
This reverts commit fd86cc6597.
2024-11-24 00:23:54 +01:00
Ksawlii
29c857027d Revert "net: hns3: fix wrong use of semaphore up"
This reverts commit deb6d455f4.
2024-11-24 00:23:53 +01:00
Ksawlii
39f88f5bf8 Revert "net: hns3: fix a deadlock problem when config TC during resetting"
This reverts commit 26a0b43c4b.
2024-11-24 00:23:53 +01:00
Ksawlii
52f4f64489 Revert "net/sun3_82586: Avoid reading past buffer in debug output"
This reverts commit 70d98df8ea.
2024-11-24 00:23:52 +01:00
Ksawlii
0eeaf7577a Revert "net: hns3: add checking for vf id of mailbox"
This reverts commit 7e18329b75.
2024-11-24 00:23:52 +01:00
Ksawlii
5036a90d21 Revert "ice: fix ICE_LAST_OFFSET formula"
This reverts commit 9a98cb967c.
2024-11-24 00:23:51 +01:00
Ksawlii
6fe606a02b Revert "net: xilinx: axienet: Always disable promiscuous mode"
This reverts commit a7875446c0.
2024-11-24 00:23:51 +01:00
Ksawlii
09bc706e3c Revert "net: xilinx: axienet: Fix dangling multicast addresses"
This reverts commit ae9628b4fa.
2024-11-24 00:23:50 +01:00
Ksawlii
35b8c8834d Revert "igb: Fix not clearing TimeSync interrupts for 82580"
This reverts commit 11b7218c81.
2024-11-24 00:23:42 +01:00
Ksawlii
a4bc5ebe94 Revert "igc: Unlock on error in igc_io_resume()"
This reverts commit d0a818c297.
2024-11-24 00:23:42 +01:00
Ksawlii
279241fa19 Revert "net: dpaa: avoid on-stack arrays of NR_CPUS elements"
This reverts commit a0e5358edc.
2024-11-24 00:23:39 +01:00
Ksawlii
13a9224eff Revert "net: ethernet: use ip_hdrlen() instead of bit shift"
This reverts commit e9c6237f35.
2024-11-24 00:23:36 +01:00
Ksawlii
1ba1b1e7b3 Revert "ice: fix accounting for filters shared by multiple VSIs"
This reverts commit 14c7602518.
2024-11-24 00:23:35 +01:00
Ksawlii
4f4fca3a0f Revert "net/mlx5: Update the list of the PCI supported devices"
This reverts commit 5faf98b4ac.
2024-11-24 00:23:34 +01:00
Ksawlii
551674c42e Revert "net/mlx5e: Add missing link modes to ptys2ethtool_map"
This reverts commit e25fd0c3e1.
2024-11-24 00:23:34 +01:00
Ksawlii
d85c07139d Revert "net: ftgmac100: Enable TX interrupt to avoid TX timeout"
This reverts commit eb248351db.
2024-11-24 00:23:34 +01:00
Ksawlii
b73b428f1d Revert "net: dpaa: Pad packets to ETH_ZLEN"
This reverts commit 3ad5828caa.
2024-11-24 00:23:34 +01:00
Ksawlii
d4c68e1fc4 Revert "net: ftgmac100: Ensure tx descriptor updates are visible"
This reverts commit f48cec25ee.
2024-11-24 00:23:33 +01:00
Ksawlii
1107016b02 Revert "net: enetc: Use IRQF_NO_AUTOEN flag in request_irq()"
This reverts commit e356dcea7c.
2024-11-24 00:23:29 +01:00
Ksawlii
cb6b405833 Revert "r8169: disable ALDPS per default for RTL8125"
This reverts commit b64d3334b9.
2024-11-24 00:23:29 +01:00
Ksawlii
cca2e810e8 Revert "net: seeq: Fix use after free vulnerability in ether3 Driver Due to Race Condition"
This reverts commit 2168093ef8.
2024-11-24 00:23:18 +01:00
Ksawlii
ade1083a2d Revert "net/mlx5: Fix error path in multi-packet WQE transmit"
This reverts commit 270ecc4364.
2024-11-24 00:23:12 +01:00
Ksawlii
318078984c Revert "net/mlx5: Added cond_resched() to crdump collection"
This reverts commit 4d839c06f8.
2024-11-24 00:23:12 +01:00
Ksawlii
d422a0435b Revert "net: ethernet: lantiq_etop: fix memory disclosure"
This reverts commit 9274ce290d.
2024-11-24 00:23:12 +01:00
Ksawlii
5a67c02dd6 Revert "ice: Adjust over allocation of memory in ice_sched_add_root_node() and ice_sched_add_node()"
This reverts commit 30705ece9d.
2024-11-24 00:23:10 +01:00
Ksawlii
312c6c6837 Revert "net: hisilicon: hip04: fix OF node leak in probe()"
This reverts commit 894592fa8b.
2024-11-24 00:23:10 +01:00
Ksawlii
fae39e1046 Revert "net: hisilicon: hns_dsaf_mac: fix OF node leak in hns_mac_get_info()"
This reverts commit 93ae0df7e7.
2024-11-24 00:23:10 +01:00
Ksawlii
c8ed470e75 Revert "net: hisilicon: hns_mdio: fix OF node leak in probe()"
This reverts commit 63949269ce.
2024-11-24 00:23:10 +01:00
Ksawlii
1dfd99890d Revert "net: mvpp2: Increase size of queue_name buffer"
This reverts commit 421ea3a3fa.
2024-11-24 00:23:08 +01:00
Ksawlii
bb3f1c8add Revert "net: atlantic: Avoid warning about potential string truncation"
This reverts commit f7cf43b465.
2024-11-24 00:23:08 +01:00
Ksawlii
2f697a70d6 Revert "nfp: Use IRQF_NO_AUTOEN flag in request_irq()"
This reverts commit 62e93957d0.
2024-11-24 00:23:07 +01:00
Ksawlii
26d9380b53 Revert "net: stmmac: Fix zero-division error when disabling tc cbs"
This reverts commit 9f91978b91.
2024-11-24 00:23:01 +01:00
Ksawlii
2415f05839 Revert "r8169: Fix spelling mistake: "tx_underun" -> "tx_underrun""
This reverts commit 9a5c8049a7.
2024-11-24 00:23:00 +01:00
Ksawlii
d43e90556a Revert "r8169: add tally counter fields added with RTL8125"
This reverts commit b57e5dc84b.
2024-11-24 00:23:00 +01:00
Ksawlii
d95116a19d Revert "net: ethernet: cortina: Drop TSO support"
This reverts commit 5a37f561e7.
2024-11-24 00:23:00 +01:00
Ksawlii
f19c17b06d Revert "ice: fix VLAN replay after reset"
This reverts commit 6bb154f4ac.
2024-11-24 00:22:57 +01:00
Ksawlii
81da5daf84 Revert "igb: Do not bring the device up after non-fatal error"
This reverts commit e28819c79a.
2024-11-24 00:22:56 +01:00
Ksawlii
e0175afaa9 Revert "net: ibm: emac: mal: fix wrong goto"
This reverts commit c04c8e56b9.
2024-11-24 00:22:56 +01:00
Ksawlii
11b289f4f9 Revert "net: macb: Avoid 20s boot delay by skipping MDIO bus registration for fixed-link PHY"
This reverts commit f93e3153c5.
2024-11-24 00:22:53 +01:00
Daniel Palmer
d69778df1a net: amd: mvme147: Fix probe banner message
[ Upstream commit 82c5b53140faf89c31ea2b3a0985a2f291694169 ]

Currently this driver prints this line with what looks like
a rogue format specifier when the device is probed:
[    2.840000] eth%d: MVME147 at 0xfffe1800, irq 12, Hardware Address xx:xx:xx:xx:xx:xx

Change the printk() for netdev_info() and move it after the
registration has completed so it prints out the name of the
interface properly.

Signed-off-by: Daniel Palmer <daniel@0x0f.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-11-23 23:22:04 +01:00