android_kernel_motorola_sm6375/drivers
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lin Ma 55197ba6d6 igb: Add lock to avoid data race
commit 6faee3d4ee8be0f0367d0c3d826afb3571b7a5e0 upstream.

The commit c23d92b80e ("igb: Teardown SR-IOV before
unregister_netdev()") places the unregister_netdev() call after the
igb_disable_sriov() call to avoid functionality issue.

However, it introduces several race conditions when detaching a device.
For example, when .remove() is called, the below interleaving leads to
use-after-free.

 (FREE from device detaching)      |   (USE from netdev core)
igb_remove                         |  igb_ndo_get_vf_config
 igb_disable_sriov                 |  vf >= adapter->vfs_allocated_count?
  kfree(adapter->vf_data)          |
  adapter->vfs_allocated_count = 0 |
                                   |    memcpy(... adapter->vf_data[vf]

Moreover, the igb_disable_sriov() also suffers from data race with the
requests from VF driver.

 (FREE from device detaching)      |   (USE from requests)
igb_remove                         |  igb_msix_other
 igb_disable_sriov                 |   igb_msg_task
  kfree(adapter->vf_data)          |    vf < adapter->vfs_allocated_count
  adapter->vfs_allocated_count = 0 |

To this end, this commit first eliminates the data races from netdev
core by using rtnl_lock (similar to commit 719479230893 ("dpaa2-eth: add
MAC/PHY support through phylink")). And then adds a spinlock to
eliminate races from driver requests. (similar to commit 1e53834ce541
("ixgbe: Add locking to prevent panic when setting sriov_numvfs to zero")

Fixes: c23d92b80e ("igb: Teardown SR-IOV before unregister_netdev()")
Signed-off-by: Lin Ma <linma@zju.edu.cn>
Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://lore.kernel.org/r/20220817184921.735244-1-anthony.l.nguyen@intel.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-25 11:18:30 +02:00
..
accessibility
acpi ACPI: property: Return type of acpi_add_nondev_subnodes() should be bool 2022-08-25 11:18:24 +02:00
amba
android
ata ata: libata-eh: Add missing command name 2022-08-25 11:18:18 +02:00
atm atm: idt77252: fix use-after-free bugs caused by tst_timer 2022-08-25 11:18:26 +02:00
auxdisplay
base driver core: fix potential deadlock in __driver_attach 2022-08-25 11:17:52 +02:00
bcma
block null_blk: fix ida error handling in null_add_dev() 2022-08-25 11:17:59 +02:00
bluetooth Bluetooth: hci_intel: Add check for platform_driver_register 2022-08-25 11:17:47 +02:00
bus bus: hisi_lpc: fix missing platform_device_put() in hisi_lpc_acpi_probe() 2022-08-25 11:17:35 +02:00
cdrom
char random: update comment from copy_to_user() -> copy_to_iter() 2022-06-29 08:58:49 +02:00
clk clk: rockchip: add sclk_mac_lbtest to rk3188_critical_clocks 2022-08-25 11:18:28 +02:00
clocksource clocksource/drivers/ixp4xx: remove EXPORT_SYMBOL_GPL from ixp4xx_timer_setup() 2022-07-07 17:36:53 +02:00
connector
counter
cpufreq cpufreq: pmac32-cpufreq: Fix refcount leak bug 2022-07-21 20:59:24 +02:00
cpuidle
crypto crypto: inside-secure - Add missing MODULE_DEVICE_TABLE for of 2022-08-25 11:17:48 +02:00
dax
dca
devfreq PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events 2022-07-07 17:36:49 +02:00
dio
dma dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate 2022-07-12 16:30:50 +02:00
dma-buf udmabuf: add back sanity check 2022-06-29 08:58:46 +02:00
edac
eisa
extcon extcon: Modify extcon device to be created after driver data is set 2022-06-14 18:12:00 +02:00
firewire
firmware firmware: arm_scpi: Ensure scpi_info is not assigned if the probe fails 2022-08-25 11:18:15 +02:00
fpga fpga: altera-pr-ip: fix unsigned comparison with less than zero 2022-08-25 11:17:51 +02:00
fsi
gnss
gpio gpio: gpiolib-of: Fix refcount bugs in of_mm_gpiochip_add_data() 2022-08-25 11:17:57 +02:00
gpu drm/exynos/exynos7_drm_decon: free resources when clk_set_parent() failed. 2022-08-25 11:17:43 +02:00
greybus
hid HID: alps: Declare U1_UNICORN_LEGACY support 2022-08-25 11:17:57 +02:00
hsi
hv random: remove unused irq_flags argument from add_interrupt_randomness() 2022-06-22 14:11:06 +02:00
hwmon hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails 2022-07-07 17:36:50 +02:00
hwspinlock
hwtracing intel_th: pci: Add Meteor Lake-P support 2022-08-25 11:18:13 +02:00
i2c i2c: mux-gpmux: Add of_node_put() when breaking out of loop 2022-08-25 11:17:47 +02:00
i3c
ide
idle
iio iio: light: isl29028: Fix the warning in isl29028_remove() 2022-08-25 11:17:24 +02:00
infiniband RDMA/rxe: Fix error unwind in rxe_create_qp() 2022-08-25 11:17:59 +02:00
input Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag 2022-06-14 18:12:03 +02:00
interconnect
iommu iommu/vt-d: avoid invalid memory access via node_online(NUMA_NO_NODE) 2022-08-25 11:18:15 +02:00
ipack
irqchip irqchip: or1k-pic: Undefine mask_ack for level triggered hardware 2022-07-21 20:59:26 +02:00
isdn
leds
lightnvm
macintosh macintosh/adb: fix oob read in do_adb_query() function 2022-08-11 12:57:53 +02:00
mailbox mailbox: forward the hrtimer if not queued and under a lock 2022-06-14 18:11:42 +02:00
mcb
md dm writecache: set a default MAX_WRITEBACK_JOBS 2022-08-25 11:18:14 +02:00
media media: platform: mtk-mdp: Fix mdp_ipi_comm structure alignment 2022-08-25 11:17:42 +02:00
memory
memstick memstick/ms_block: Fix a memory leak 2022-08-25 11:17:55 +02:00
message
mfd mfd: max77620: Fix refcount leak in max77620_initialise_fps 2022-08-25 11:18:04 +02:00
misc misc: rtsx: Fix an error handling path in rtsx_pci_probe() 2022-08-25 11:17:52 +02:00
mmc mmc: pxamci: Fix an error handling path in pxamci_probe() 2022-08-25 11:18:19 +02:00
mtd mtd: st_spi_fsm: Add a clk_disable_unprepare() in .probe()'s error path 2022-08-25 11:17:51 +02:00
mux
net igb: Add lock to avoid data race 2022-08-25 11:18:30 +02:00
nfc NFC: nxp-nci: don't print header length mismatch on i2c error 2022-07-21 20:59:25 +02:00
ntb NTB: ntb_tool: uninitialized heap data in tool_fn_write() 2022-08-25 11:18:26 +02:00
nubus
nvdimm nvdimm: Fix badblocks clear off-by-one error 2022-07-07 17:36:48 +02:00
nvme nvme: fix regression when disconnect a recovering ctrl 2022-07-21 20:59:25 +02:00
nvmem
of of: overlay: do not break notify on NOTIFY_{OK|STOP} 2022-06-14 18:11:34 +02:00
opp opp: Fix error check in dev_pm_opp_attach_genpd() 2022-08-25 11:18:00 +02:00
oprofile
parisc
parport
pci PCI: tegra194: Fix link up retry sequence 2022-08-25 11:17:58 +02:00
pcmcia pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards 2022-06-14 18:11:50 +02:00
perf
phy phy: qcom-qmp: fix pipe-clock imbalance on power-on failure 2022-06-14 18:11:52 +02:00
pinctrl pinctrl: sunxi: Add I/O bias setting for H6 R-PIO 2022-08-25 11:18:24 +02:00
platform platform/olpc: Fix uninitialized data in debugfs write 2022-08-25 11:17:58 +02:00
pnp
power power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe 2022-07-29 17:14:10 +02:00
powercap
pps
ps3
ptp
pwm pwm: lp3943: Fix duty calculation in case period was clamped 2022-06-14 18:11:51 +02:00
rapidio
ras
regulator regulator: of: Fix refcount leak bug in of_get_regulation_constraints() 2022-08-25 11:17:36 +02:00
remoteproc remoteproc: qcom: wcnss: Fix handling of IRQs 2022-08-25 11:18:02 +02:00
reset
rpmsg rpmsg: qcom_smd: Fix refcount leak in qcom_smd_parse_edge 2022-08-25 11:18:04 +02:00
rtc rtc: mt6397: check return value after calling platform_get_resource() 2022-06-14 18:11:53 +02:00
s390 scsi: zfcp: Fix missing auto port scan and thus missing target ports 2022-08-25 11:18:10 +02:00
sbus
scsi scsi: sg: Allow waiting for commands to complete on removed device 2022-08-25 11:18:17 +02:00
sfi
sh
siox
slimbus
soc soc: qcom: aoss: Fix refcount leak in qmp_cooling_devices_register 2022-08-25 11:17:35 +02:00
soundwire soundwire: bus_type: fix remove and shutdown support 2022-08-25 11:17:54 +02:00
spi spi: spi-rspi: Fix PIO fallback on RZ platforms 2022-08-25 11:17:32 +02:00
spmi
ssb
staging staging: rtl8192u: Fix sleep in atomic context bug in dm_fsync_timer_callback 2022-08-25 11:17:55 +02:00
target
tc
tee tee: add overflow check in register_shm_helper() 2022-08-25 11:18:27 +02:00
thermal thermal: sysfs: Fix cooling_device_stats_setup() error code path 2022-08-25 11:17:22 +02:00
thunderbolt
tty tty: n_gsm: fix missing corner cases in gsmld_poll() 2022-08-25 11:18:03 +02:00
uio
usb USB: serial: fix tty-port initialized comments 2022-08-25 11:17:58 +02:00
vfio
vhost vringh: Fix loop descriptors check in the indirect cases 2022-06-14 18:12:02 +02:00
video video: fbdev: s3fb: Check the size of screen before memset_io() 2022-08-25 11:18:09 +02:00
virt
virtio virtio_mmio: Restore guest page size on resume 2022-07-21 20:59:24 +02:00
visorbus
vlynq
vme
w1
watchdog watchdog: armada_37xx_wdt: check the return value of devm_ioremap() in armada_37xx_wdt_probe() 2022-08-25 11:18:06 +02:00
xen xen/xenbus: fix return type in xenbus_file_read() 2022-08-25 11:18:26 +02:00
zorro
Kconfig
Makefile