linux/drivers
Maxim Mikityanskiy 94ce3b64c6 net/tls: Use RCU API to access tls_ctx->netdev
Currently, tls_device_down synchronizes with tls_device_resync_rx using
RCU, however, the pointer to netdev is stored using WRITE_ONCE and
loaded using READ_ONCE.

Although such approach is technically correct (rcu_dereference is
essentially a READ_ONCE, and rcu_assign_pointer uses WRITE_ONCE to store
NULL), using special RCU helpers for pointers is more valid, as it
includes additional checks and might change the implementation
transparently to the callers.

Mark the netdev pointer as __rcu and use the correct RCU helpers to
access it. For non-concurrent access pass the right conditions that
guarantee safe access (locks taken, refcount value). Also use the
correct helper in mlx5e, where even READ_ONCE was missing.

The transition to RCU exposes existing issues, fixed by this commit:

1. bond_tls_device_xmit could read netdev twice, and it could become
NULL the second time, after the NULL check passed.

2. Drivers shouldn't stop processing the last packet if tls_device_down
just set netdev to NULL, before tls_dev_del was called. This prevents a
possible packet drop when transitioning to the fallback software mode.

Fixes: 89df6a8104 ("net/bonding: Implement TLS TX device offload")
Fixes: c55dcdd435 ("net/tls: Fix use-after-free after the TLS device goes down and up")
Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Link: https://lore.kernel.org/r/20220810081602.1435800-1-maximmi@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2022-08-10 22:58:43 -07:00
..
accessibility Revert "speakup: Generate speakupmap.h automatically" 2022-05-20 21:07:05 +02:00
acpi EFI updates for v5.20 2022-08-03 14:38:02 -07:00
amba ARM: 9207/1: amba: fix refcount underflow if amba_device_add() fails 2022-07-14 13:17:48 +01:00
android fix for breakage in #work.fd this window 2022-06-05 17:14:03 -07:00
ata ATA changes for 5.20-rc1 2022-08-03 15:26:04 -07:00
atm atm: idt77252: fix use-after-free bugs caused by tst_timer 2022-08-08 20:51:59 -07:00
auxdisplay
base Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
bcma bcma: gpio: Switch to use fwnode instead of of_node 2022-05-09 14:41:43 +03:00
block for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
bluetooth Bluetooth: btusb: Detect if an ACL packet is in fact an ISO packet 2022-07-22 17:14:37 -07:00
bus Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
cdrom block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
char This update includes the following changes: 2022-08-02 17:45:14 -07:00
clk linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
clocksource - Add the missing DT bindings for the MTU nomadik timer (Linus 2022-07-28 12:33:34 +02:00
comedi comedi: vmk80xx: fix expression for tx buffer size 2022-06-10 15:21:23 +02:00
connector
counter
cpufreq Merge branches 'pm-core', 'pm-sleep', 'powercap', 'pm-domains' and 'pm-em' 2022-07-29 19:33:13 +02:00
cpuidle RCU pull request for v5.20 (or whatever) 2022-08-02 19:12:45 -07:00
crypto This update includes the following changes: 2022-08-02 17:45:14 -07:00
cxl cxl/mbox: Fix missing variable payload checks in cmd size validation 2022-06-28 22:03:18 -07:00
dax dax: add .recovery_write dax_operation 2022-05-16 13:37:59 -07:00
dca
devfreq PM / devfreq: tegra30: Add error message for devm_devfreq_add_device() 2022-07-15 11:40:08 +09:00
dio drivers: dio: add missing iounmap() in dio_init() 2022-05-19 18:56:51 +02:00
dma dmaengine: lgm: Fix an error handling path in intel_ldma_probe() 2022-07-06 10:53:25 +05:30
dma-buf Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
edac EDAC/ghes: Set the DIMM label unconditionally 2022-07-27 10:42:52 +02:00
eisa
extcon extcon: Modify extcon device to be created after driver data is set 2022-05-13 17:03:41 +09:00
firewire firewire: net: Make use of get_unaligned_be48(), put_unaligned_be48() 2022-07-28 22:21:54 -07:00
firmware EFI efivars sysfs interface removal 2022-08-03 14:41:36 -07:00
fpga fpga: dfl: Allow Port to be linked to FME's DFL 2022-05-10 16:05:38 +08:00
fsi
gnss
gpio Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
gpu Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
greybus
hid HID: hyperv: Correctly access fields declared as __le16 2022-06-08 12:28:13 +00:00
hsi
hte hte: Uninitialized variable in hte_ts_get() 2022-05-20 15:54:41 +02:00
hv Drivers: hv: vmbus: Release cpu lock in error case 2022-06-10 08:41:28 +00:00
hwmon hwmon updates for v5.20 2022-08-02 11:07:04 -07:00
hwspinlock
hwtracing coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier 2022-05-09 16:03:24 +01:00
i2c ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
i3c i3c: master: svc: fix returnvar.cocci warning 2022-05-17 22:34:42 +02:00
idle Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
iio 1st set of IIO fixes for the 5.19 cycle. 2022-06-20 09:49:52 +02:00
infiniband Networking changes for 6.0. 2022-08-03 16:29:08 -07:00
input EFI updates for v5.20 2022-08-03 14:38:02 -07:00
interconnect Char / Misc / Other smaller driver subsystem updates for 5.19-rc1 2022-06-03 11:36:34 -07:00
iommu Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
ipack
irqchip ARM: new SoC support for 6.0 2022-08-02 08:29:18 -07:00
isdn isdn: mISDN: hfcsusb: drop unexpected word "the" in the comments 2022-06-22 18:20:46 -07:00
leds ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
macintosh macintosh: via-pmu and via-cuda need RTC_LIB 2022-05-22 15:58:30 +10:00
mailbox mailbox: qcom-ipcc: Fix -Wunused-function with CONFIG_PM_SLEEP=n 2022-05-24 08:08:24 -05:00
mcb
md hardening updates for v5.20-rc1 2022-08-02 14:38:59 -07:00
media USB / Thunderbolt changes for 5.19-rc1 2022-06-03 11:17:49 -07:00
memory memory: tegra: Changes for v5.20-rc1 2022-07-12 22:53:08 +02:00
memstick block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
message
mfd ACPI updates for 5.20-rc1 2022-08-02 11:12:25 -07:00
misc Folio changes for 6.0 2022-08-03 10:35:43 -07:00
mmc linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
most
mtd for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
mux
net net/tls: Use RCU API to access tls_ctx->netdev 2022-08-10 22:58:43 -07:00
nfc NFC: nxp-nci: add error reporting 2022-07-13 18:52:12 -07:00
ntb
nubus
nvdimm for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
nvme iov_iter work, part 1 - isolated cleanups and optimizations. 2022-08-03 13:50:22 -07:00
nvmem nvmem: sfp: Add support for TA 2.1 devices 2022-05-09 15:46:29 +02:00
of x86/kexec: Carry forward IMA measurement log on kexec 2022-07-01 15:22:16 +02:00
opp PM: EM: convert power field to micro-Watts precision and align drivers 2022-07-15 19:17:30 +02:00
parisc genirq: Add and use an irq_data_update_affinity helper 2022-07-07 09:38:04 +01:00
parport
pci PCI: hv: Take a const cpumask in hv_compose_msi_req_get_cpu() 2022-07-08 08:44:15 +01:00
pcmcia ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
peci
perf drivers/perf: arm_spe: Fix consistency of SYS_PMSCR_EL1.CX 2022-07-19 18:50:09 +01:00
phy phy: brcm-sata: bcmbca: Replace ARCH_BCM_63XX with ARCH_BCMBCA 2022-07-08 14:09:58 -07:00
pinctrl Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
platform Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
pnp
power power: supply: core: Fix boundary conditions in interpolation 2022-06-09 21:08:38 +02:00
powercap Power management updates for 5.20-rc1 2022-08-02 11:17:00 -07:00
pps
ps3
ptp Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2022-07-28 18:21:16 -07:00
pwm pwm: lpc18xx: Fix period handling 2022-07-29 13:41:18 +02:00
rapidio
ras
regulator regulator: Consumer load management improvements 2022-07-28 00:01:30 +01:00
remoteproc remoteproc: imx_rproc: Support i.MX93 2022-05-09 09:29:25 -06:00
reset Merge branch 'nuvoton/newsoc' into arm/newsoc 2022-07-19 15:42:00 +02:00
rpmsg Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
rtc ARM: multiplatform changes, part 2 2022-06-02 15:23:54 -07:00
s390 s390/qeth: cache link_info for ethtool 2022-08-08 20:57:56 -07:00
sbus
scsi for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
sh genirq: Add and use an irq_data_update_affinity helper 2022-07-07 09:38:04 +01:00
siox
slimbus Driver core changes for 5.19-rc1 2022-06-03 11:48:47 -07:00
soc ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
soundwire soundwire: Use acpi_dev_for_each_child() 2022-06-23 20:53:06 +02:00
spi spi: Updates for v5.20 2022-08-02 10:55:04 -07:00
spmi
ssb ssb: remove unreachable code 2022-05-11 08:29:11 +03:00
staging Networking changes for 6.0. 2022-08-03 16:29:08 -07:00
target for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
tc
tee tee: tee_get_drvdata(): fix description of return value 2022-07-08 10:51:24 +02:00
thermal Thermal control updates for 5.20-rc1 2022-08-02 11:27:53 -07:00
thunderbolt linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
tty ARM: SoC drivers for 6.0 2022-08-02 08:10:10 -07:00
ufs for-5.20/block-2022-07-29 2022-08-02 13:46:35 -07:00
uio uio: dfl: add HSSI subsystem feature id 2022-05-09 15:42:57 +02:00
usb Merge branch 'acpi-bus' 2022-07-29 19:58:52 +02:00
vdpa vduse: Tie vduse mgmtdev and its device 2022-06-24 02:49:48 -04:00
vfio Saner handling of "lseek should fail with ESPIPE" - gets rid of 2022-08-03 11:35:20 -07:00
vhost vhost-vdpa: call vhost_vdpa_cleanup during the release 2022-06-27 08:05:35 -04:00
video fbcon: Use fbcon_info_from_console() in fbcon_modechange_possible() 2022-07-07 10:52:35 +02:00
virt linux-kselftest-kunit-5.20-rc1 2022-08-02 19:34:45 -07:00
virtio Folio changes for 6.0 2022-08-03 10:35:43 -07:00
vlynq
vme
w1
watchdog watchdog: gxp: Add missing MODULE_LICENSE 2022-06-09 12:20:34 +02:00
xen Updates for interrupt core and drivers: 2022-08-01 12:48:15 -07:00
zorro
Kconfig SCSI misc on 20220604 2022-06-05 09:25:12 -07:00
Makefile SCSI misc on 20220604 2022-06-05 09:25:12 -07:00