linux-stable/drivers
Mark Bloch 0cef0b7eb0 net/mlx5: E-Switch, pair only capable devices
commit 3008e6a004 upstream.

OFFLOADS paring using devcom is possible only on devices
that support LAG. Filter based on lag capabilities.

This fixes an issue where mlx5_get_next_phys_dev() was
called without holding the interface lock.

This issue was found when commit
bc4c2f2e01 ("net/mlx5: Lag, filter non compatible devices")
added an assert that verifies the interface lock is held.

WARNING: CPU: 9 PID: 1706 at drivers/net/ethernet/mellanox/mlx5/core/dev.c:642 mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
Modules linked in: 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 rpcrdma rdma_ucm ib_iser libiscsi scsi_transport_iscsi rdma_cm iw_cm ib_umad ib_ipoib ib_cm ib_uverbs ib_core overlay fuse [last unloaded: mlx5_core]
CPU: 9 PID: 1706 Comm: devlink Not tainted 5.18.0-rc7+ #11
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
RIP: 0010:mlx5_get_next_phys_dev+0xd2/0x100 [mlx5_core]
Code: 02 00 75 48 48 8b 85 80 04 00 00 5d c3 31 c0 5d c3 be ff ff ff ff 48 c7 c7 08 41 5b a0 e8 36 87 28 e3 85 c0 0f 85 6f ff ff ff <0f> 0b e9 68 ff ff ff 48 c7 c7 0c 91 cc 84 e8 cb 36 6f e1 e9 4d ff
RSP: 0018:ffff88811bf47458 EFLAGS: 00010246
RAX: 0000000000000000 RBX: ffff88811b398000 RCX: 0000000000000001
RDX: 0000000080000000 RSI: ffffffffa05b4108 RDI: ffff88812daaaa78
RBP: ffff88812d050380 R08: 0000000000000001 R09: ffff88811d6b3437
R10: 0000000000000001 R11: 00000000fddd3581 R12: ffff88815238c000
R13: ffff88812d050380 R14: ffff8881018aa7e0 R15: ffff88811d6b3428
FS:  00007fc82e18ae80(0000) GS:ffff88842e080000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f9630d1b421 CR3: 0000000149802004 CR4: 0000000000370ea0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 mlx5_esw_offloads_devcom_event+0x99/0x3b0 [mlx5_core]
 mlx5_devcom_send_event+0x167/0x1d0 [mlx5_core]
 esw_offloads_enable+0x1153/0x1500 [mlx5_core]
 ? mlx5_esw_offloads_controller_valid+0x170/0x170 [mlx5_core]
 ? wait_for_completion_io_timeout+0x20/0x20
 ? mlx5_rescan_drivers_locked+0x318/0x810 [mlx5_core]
 mlx5_eswitch_enable_locked+0x586/0xc50 [mlx5_core]
 ? mlx5_eswitch_disable_pf_vf_vports+0x1d0/0x1d0 [mlx5_core]
 ? mlx5_esw_try_lock+0x1b/0xb0 [mlx5_core]
 ? mlx5_eswitch_enable+0x270/0x270 [mlx5_core]
 ? __debugfs_create_file+0x260/0x3e0
 mlx5_devlink_eswitch_mode_set+0x27e/0x870 [mlx5_core]
 ? mutex_lock_io_nested+0x12c0/0x12c0
 ? esw_offloads_disable+0x250/0x250 [mlx5_core]
 ? devlink_nl_cmd_trap_get_dumpit+0x470/0x470
 ? rcu_read_lock_sched_held+0x3f/0x70
 devlink_nl_cmd_eswitch_set_doit+0x217/0x620

Fixes: dd3fddb827 ("net/mlx5: E-Switch, handle devcom events only for ports on the same device")
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-06-14 18:41:54 +02:00
..
accessibility
acpi ACPI: property: Release subnode properties with data nodes 2022-06-09 10:26:19 +02:00
amba
android binder: Address corner cases in deferred copy and fixup 2022-05-09 09:16:14 +02:00
ata ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files 2022-06-14 18:41:46 +02:00
atm
auxdisplay
base driver core: Fix wait_for_device_probe() & deferred_probe_timeout interaction 2022-06-14 18:41:25 +02:00
bcma
block block, loop: support partitions without scanning 2022-06-14 18:41:52 +02:00
bluetooth Bluetooth: btmtksdio: fix use-after-free at btmtksdio_recv_event 2022-06-09 10:25:52 +02:00
bus bus: ti-sysc: Fix warnings for unbind for serial 2022-06-14 18:41:19 +02:00
cdrom
char random: account for arch randomness in bits 2022-06-14 18:41:52 +02:00
clk clk: tegra: Add missing reset deassertion 2022-06-09 10:26:29 +02:00
clocksource clocksource/drivers/sp804: Avoid error on multiple instances 2022-06-14 18:41:35 +02:00
comedi
connector
counter
cpufreq cpufreq: mediatek: Unregister platform device on exit 2022-06-09 10:26:12 +02:00
cpuidle cpuidle: PSCI: Improve support for suspend-to-RAM for PSCI OSI mode 2022-06-09 10:25:21 +02:00
crypto crypto: sun8i-ss - handle zero sized sg 2022-06-09 10:26:07 +02:00
cxl cxl/port: Hold port reference until decoder release 2022-04-08 13:58:07 +02:00
dax dax: make sure inodes are flushed before destroy cache 2022-04-08 13:58:07 +02:00
dca
devfreq PM / devfreq: rk3399_dmc: Disable edev on remove() 2022-06-09 10:25:32 +02:00
dio
dma dmaengine: idxd: add missing callback function to support DMA_INTERRUPT 2022-06-14 18:41:53 +02:00
dma-buf dma-buf: ensure unique directory name for dmabuf stats 2022-05-25 09:59:04 +02:00
edac EDAC/dmc520: Don't print an error for each unconfigured interrupt line 2022-06-09 10:25:40 +02:00
eisa
extcon extcon: Modify extcon device to be created after driver data is set 2022-06-14 18:41:35 +02:00
firewire firewire: core: extend card->lock in fw_core_handle_bus_reset 2022-05-12 12:32:20 +02:00
firmware firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle 2022-06-14 18:41:19 +02:00
fpga
fsi fsi: Aspeed: Fix a potential double free 2022-04-08 13:58:24 +02:00
gnss
gpio gpio: pca953x: use the correct register address to do regcache sync 2022-06-14 18:41:25 +02:00
gpu drm/ast: Create threshold values for AST2600 2022-06-14 18:41:51 +02:00
greybus greybus: svc: fix an error handling bug in gb_svc_hello() 2022-04-08 13:57:16 +02:00
hid HID: amd_sfh: Modify the hid name 2022-06-09 10:25:49 +02:00
hsi
hv Drivers: hv: vmbus: Fix handling of messages with transaction ID of zero 2022-06-09 10:26:03 +02:00
hwmon hwmon: (pmbus) Check PEC support before reading other registers 2022-06-09 10:25:57 +02:00
hwspinlock
hwtracing coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier 2022-06-14 18:41:17 +02:00
i2c i2c: cadence: Increase timeout per message if necessary 2022-06-14 18:41:27 +02:00
i3c
idle cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE 2022-06-14 18:41:49 +02:00
iio iio: st_sensors: Add a local lock for protecting odr 2022-06-14 18:41:33 +02:00
infiniband RDMA/rxe: Generate a completion for unsupported/invalid opcode 2022-06-09 10:26:31 +02:00
input Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag 2022-06-14 18:41:48 +02:00
interconnect interconnect: Restore sync state by ignoring ipa-virt in provider count 2022-05-18 10:28:18 +02:00
iommu iommu/arm-smmu-v3: check return value after calling platform_get_resource() 2022-06-14 18:41:27 +02:00
ipack
irqchip irqchip: irq-xtensa-mx: fix initial IRQ affinity 2022-06-09 10:26:26 +02:00
isdn
leds
macintosh macintosh: via-pmu and via-cuda need RTC_LIB 2022-06-09 10:26:09 +02:00
mailbox mailbox: forward the hrtimer if not queued and under a lock 2022-06-09 10:26:10 +02:00
mcb
md md/raid0: Ignore RAID0 layout if the second zone has only one device 2022-06-14 18:41:52 +02:00
media media: coda: Add more H264 levels for CODA960 2022-06-09 10:26:25 +02:00
memory memory: samsung: exynos5422-dmc: Avoid some over memory allocation 2022-06-09 10:25:59 +02:00
memstick memstick/mspro_block: fix handling of read-only devices 2022-04-08 13:58:36 +02:00
message
mfd mfd: davinci_voicecodec: Fix possible null-ptr-deref davinci_vc_probe() 2022-06-09 10:26:10 +02:00
misc misc: rtsx: set NULL intfdata when probe fails 2022-06-14 18:41:35 +02:00
mmc mmc: block: Fix CQE recovery reset success 2022-06-14 18:41:46 +02:00
most
mtd ubi: ubi_create_volume: Fix use-after-free when volume creation failed 2022-06-14 18:41:22 +02:00
mux
net net/mlx5: E-Switch, pair only capable devices 2022-06-14 18:41:54 +02:00
nfc nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION 2022-06-14 18:41:48 +02:00
ntb
nubus
nvdimm mce: fix set_mce_nospec to always unmap the whole page 2022-06-09 10:26:08 +02:00
nvme nvme: set dma alignment to dword 2022-06-09 10:25:53 +02:00
nvmem
of of: overlay: do not break notify on NOTIFY_{OK|STOP} 2022-06-09 10:25:43 +02:00
opp OPP: call of_node_put() on error path in _bandwidth_supported() 2022-06-09 10:26:11 +02:00
parisc parisc: Fix CPU affinity for Lasi, WAX and Dino chips 2022-04-13 19:27:26 +02:00
parport
pci PCI: qcom: Fix pipe clock imbalance 2022-06-14 18:41:53 +02:00
pcmcia pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards 2022-06-14 18:41:12 +02:00
perf arm_pmu: Validate single/group leader events 2022-04-27 14:41:15 +02:00
phy phy: qcom-qmp: fix pipe-clock imbalance on power-on failure 2022-06-14 18:41:16 +02:00
pinctrl pinctrl/rockchip: support setting input-enable param 2022-06-09 10:26:32 +02:00
platform platform/x86: hp-wmi: Use zero insize parameter only when supported 2022-06-14 18:41:43 +02:00
pnp
power extcon: Fix extcon_get_extcon_dev() error handling 2022-06-14 18:41:35 +02:00
powercap powercap/dtpm_cpu: Reset per_cpu variable in the release function 2022-04-08 13:58:37 +02:00
pps pps: clients: gpio: Propagate return value from pps_gpio_probe 2022-04-08 13:58:24 +02:00
ps3
ptp ptp: ocp: have adjtime handle negative delta_ns correctly 2022-05-25 09:59:07 +02:00
pwm pwm: raspberrypi-poe: Fix endianness in firmware struct 2022-06-14 18:41:14 +02:00
rapidio
ras
regulator regulator: scmi: Fix refcount leak in scmi_regulator_probe 2022-06-09 10:25:54 +02:00
remoteproc remoteproc: imx_rproc: Ignore create mem entry for resource table 2022-06-14 18:41:13 +02:00
reset reset: tegra-bpmp: Restore Handle errors in BPMP response 2022-04-27 14:41:06 +02:00
rpmsg rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails 2022-06-14 18:41:16 +02:00
rtc rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe 2022-06-14 18:41:18 +02:00
s390 s390/stp: clock_delta should be signed 2022-06-09 10:26:21 +02:00
sbus
scsi scsi: sd: Fix interpretation of VPD B9h length 2022-06-14 18:41:45 +02:00
sh
siox
slimbus slimbus: qcom: Fix IRQ check in qcom_slim_probe 2022-05-18 10:28:20 +02:00
soc soc: rockchip: Fix refcount leak in rockchip_grf_init 2022-06-14 18:41:17 +02:00
soundwire soundwire: qcom: adjust autoenumeration timeout 2022-06-14 18:41:35 +02:00
spi spi: fsi: Fix spurious timeout 2022-06-14 18:41:20 +02:00
spmi
ssb
staging staging: rtl8712: fix uninit-value in r871xu_drv_init() 2022-06-14 18:41:35 +02:00
target target: remove an incorrect unmap zeroes data deduction 2022-06-09 10:25:40 +02:00
tc
tee tee: optee: add missing mutext_destroy in optee_ffa_probe 2022-05-09 09:16:17 +02:00
thermal thermal: devfreq_cooling: use local ops instead of global ops 2022-06-09 10:26:26 +02:00
thunderbolt thunderbolt: Use different lane for second DisplayPort tunnel 2022-06-14 18:41:34 +02:00
tty serial: msm_serial: disable interrupts in __msm_console_write() 2022-06-14 18:41:36 +02:00
uio
usb extcon: Fix extcon_get_extcon_dev() error handling 2022-06-14 18:41:35 +02:00
vdpa vduse: Fix NULL pointer dereference on sysfs access 2022-06-14 18:41:49 +02:00
vfio vfio/pci: Fix vf_token mechanism when device-specific VF drivers are used 2022-04-20 09:36:18 +02:00
vhost vringh: Fix loop descriptors check in the indirect cases 2022-06-14 18:41:42 +02:00
video video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_probe/remove() 2022-06-14 18:41:28 +02:00
virt virt: acrn: fix a memory leak in acrn_dev_ioctl() 2022-04-08 13:58:30 +02:00
virtio virtio: pci: Fix an error handling path in vp_modern_probe() 2022-06-14 18:41:23 +02:00
visorbus
vlynq
vme
w1 w1: w1_therm: fixes w1_seq for ds28ea00 sensors 2022-04-13 19:27:24 +02:00
watchdog watchdog: wdat_wdt: Stop watchdog when rebooting the system 2022-06-14 18:41:36 +02:00
xen xen: unexport __init-annotated xen_xlate_map_ballooned_pages() 2022-06-14 18:41:30 +02:00
zorro
Kconfig
Makefile