OpenCloudOS-Kernel/drivers
Taehee Yoo b648eba4c6 bonding: fix suspicious RCU usage in bond_ipsec_add_sa()
To dereference bond->curr_active_slave, it uses rcu_dereference().
But it and the caller doesn't acquire RCU so a warning occurs.
So add rcu_read_lock().

Test commands:
    ip link add dummy0 type dummy
    ip link add bond0 type bond
    ip link set dummy0 master bond0
    ip link set dummy0 up
    ip link set bond0 up
    ip x s add proto esp dst 14.1.1.1 src 15.1.1.1 spi 0x07 \
	    mode transport \
	    reqid 0x07 replay-window 32 aead 'rfc4106(gcm(aes))' \
	    0x44434241343332312423222114131211f4f3f2f1 128 sel \
	    src 14.0.0.52/24 dst 14.0.0.70/24 proto tcp offload \
	    dev bond0 dir in

Splat looks like:
=============================
WARNING: suspicious RCU usage
5.13.0-rc3+ #1168 Not tainted
-----------------------------
drivers/net/bonding/bond_main.c:411 suspicious rcu_dereference_check() usage!

other info that might help us debug this:

rcu_scheduler_active = 2, debug_locks = 1
1 lock held by ip/684:
 #0: ffffffff9a2757c0 (&net->xfrm.xfrm_cfg_mutex){+.+.}-{3:3},
at: xfrm_netlink_rcv+0x59/0x80 [xfrm_user]
   55.191733][  T684] stack backtrace:
CPU: 0 PID: 684 Comm: ip Not tainted 5.13.0-rc3+ #1168
Call Trace:
 dump_stack+0xa4/0xe5
 bond_ipsec_add_sa+0x18c/0x1f0 [bonding]
 xfrm_dev_state_add+0x2a9/0x770
 ? memcpy+0x38/0x60
 xfrm_add_sa+0x2278/0x3b10 [xfrm_user]
 ? xfrm_get_policy+0xaa0/0xaa0 [xfrm_user]
 ? register_lock_class+0x1750/0x1750
 xfrm_user_rcv_msg+0x331/0x660 [xfrm_user]
 ? rcu_read_lock_sched_held+0x91/0xc0
 ? xfrm_user_state_lookup.constprop.39+0x320/0x320 [xfrm_user]
 ? find_held_lock+0x3a/0x1c0
 ? mutex_lock_io_nested+0x1210/0x1210
 ? sched_clock_cpu+0x18/0x170
 netlink_rcv_skb+0x121/0x350
 ? xfrm_user_state_lookup.constprop.39+0x320/0x320 [xfrm_user]
 ? netlink_ack+0x9d0/0x9d0
 ? netlink_deliver_tap+0x17c/0xa50
 xfrm_netlink_rcv+0x68/0x80 [xfrm_user]
 netlink_unicast+0x41c/0x610
 ? netlink_attachskb+0x710/0x710
 netlink_sendmsg+0x6b9/0xb70
[ ... ]

Fixes: 18cb261afd ("bonding: support hardware encryption offload to slaves")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-07-06 10:36:59 -07:00
..
accessibility braille_console: Fix fall-through warnings for Clang 2021-05-17 19:38:01 -05:00
acpi Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
amba
android binder: Return EFAULT if we fail BINDER_ENABLE_ONEWAY_SPAM_DETECTION 2021-05-13 20:35:26 +02:00
ata ata: rb532_cf: remove redundant codes 2021-06-24 18:49:01 -06:00
atm Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
auxdisplay treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
base Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
bcma bcma: remove unused function 2021-04-18 09:36:56 +03:00
block for-5.14/drivers-2021-06-29 2021-06-30 12:21:16 -07:00
bluetooth Bluetooth: hci_uart: Remove redundant assignment to fw_ptr 2021-06-26 07:52:41 +02:00
bus Char/Misc driver fixes for 5.13-rc6 2021-06-12 12:13:55 -07:00
cdrom gdrom: use blk_mq_alloc_disk 2021-06-11 11:53:03 -06:00
char Merge tag 'tpmdd-next-v5.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jarkko/linux-tpmdd 2021-06-30 11:23:33 -07:00
clk clk: Skip clk provider registration when np is NULL 2021-05-11 08:47:25 +02:00
clocksource clocksource/drivers/timer-ti-dm: Drop unnecessary restore 2021-06-16 17:33:04 +02:00
comedi staging: comedi: move out of staging directory 2021-04-15 09:26:25 +02:00
connector
counter
cpufreq cpufreq: Make cpufreq_online() call driver->offline() on errors 2021-06-23 19:40:56 +02:00
cpuidle Power management updates for 5.14-rc1 2021-06-29 13:36:06 -07:00
crypto crypto: sl3516 - depends on HAS_IOMEM 2021-06-24 14:57:28 +08:00
cxl cxl/mem: Fix memory device capacity probing 2021-04-16 18:21:56 -07:00
dax fs: remove noop_set_page_dirty() 2021-06-29 10:53:48 -07:00
dca
devfreq PM / devfreq: passive: Fix get_target_freq when not using required-opp 2021-06-24 10:37:35 +09:00
dio
dma dmaengine fixes for v5.13 2021-06-16 09:03:52 -07:00
dma-buf dma-buf: fix unintended pin/unpin warnings 2021-05-20 14:02:27 +02:00
edac Various fixes and support for new CPUS 2021-06-30 11:27:49 -07:00
eisa
extcon extcon: extcon-max8997: Simplify driver using devm 2021-06-17 13:22:27 +02:00
firewire firewire: core: Fix fall-through warnings for Clang 2021-05-17 19:40:32 -05:00
firmware Clang feature updates for v5.14-rc1 2021-06-30 14:33:25 -07:00
fpga ARM: SoC drivers for v5.13 2021-04-26 12:11:52 -07:00
fsi
gnss
gpio platform-drivers-x86 for v5.14-1 2021-06-30 11:15:39 -07:00
gpu Merge branch 'akpm' (patches from Andrew) 2021-06-29 17:29:11 -07:00
greybus greybus: es2: fix kernel-doc warnings 2021-04-16 07:26:50 +02:00
hid Merge branch 'for-5.14/multitouch' into for-linus 2021-06-30 09:15:15 +02:00
hsi HSI: core: fix resource leaks in hsi_add_client_from_dt() 2021-04-16 00:14:49 +02:00
hv hyperv-next for 5.14 2021-06-29 11:21:35 -07:00
hwmon fallthrough fixes for Clang for 5.14-rc1 2021-06-28 20:03:38 -07:00
hwspinlock
hwtracing ARM: 2021-05-01 10:14:08 -07:00
i2c ACPI updates for 5.14-rc1 2021-06-29 13:39:41 -07:00
i3c Revert "i3c master: fix missing destroy_workqueue() on error in i3c_master_register" 2021-04-24 22:21:01 +02:00
idle intel_idle: Adjust the SKX C6 parameters if PC6 is disabled 2021-06-09 17:51:07 +02:00
iio iio: adc: ad7793: Add missing error code in ad7793_setup() 2021-05-22 08:32:36 +01:00
infiniband Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-06-18 19:47:02 -07:00
input platform-drivers-x86 for v5.14-1 2021-06-30 11:15:39 -07:00
interconnect interconnect: qcom: Add missing MODULE_DEVICE_TABLE 2021-05-11 07:26:31 +03:00
iommu iommu/vt-d: Fix sysfs leak in alloc_iommu() 2021-05-27 16:07:08 +02:00
ipack
irqchip Updates for the interrupt subsystem: 2021-06-29 12:25:04 -07:00
isdn Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2021-05-27 09:55:10 -07:00
leds leds: lp5523: check return value of lp5xx_read and jump to cleanup code 2021-05-13 17:30:15 +02:00
lightnvm lightnvm: convert to blk_alloc_disk/blk_cleanup_disk 2021-06-01 07:42:23 -06:00
macintosh macintosh/via-pmu: Fix build warning 2021-04-16 23:57:51 +10:00
mailbox mbox: add polarfire soc system controller mailbox 2021-06-26 12:06:48 -05:00
mcb
md for-5.14/drivers-2021-06-29 2021-06-30 12:21:16 -07:00
media Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
memory .gitignore: prefix local generated files with a slash 2021-05-02 00:43:35 +09:00
memstick for-5.14/block-2021-06-29 2021-06-30 12:12:56 -07:00
message scsi: message: fusion: Remove unused local variable 'vtarget' 2021-04-13 01:39:12 -04:00
mfd platform-drivers-x86 for v5.14-1 2021-06-30 11:15:39 -07:00
misc Merge branch 'akpm' (patches from Andrew) 2021-06-29 17:29:11 -07:00
mmc mmc: sdhci-iproc: Add support for the legacy sdhci controller on the BCM7211 2021-06-15 17:27:48 +02:00
most Staging/IIO driver updates for 5.13-rc1 2021-04-26 11:14:21 -07:00
mtd for-5.14/block-2021-06-29 2021-06-30 12:12:56 -07:00
mux
net bonding: fix suspicious RCU usage in bond_ipsec_add_sa() 2021-07-06 10:36:59 -07:00
nfc NFC: nxp-nci: remove unnecessary label 2021-06-18 12:57:30 -07:00
ntb
nubus
nvdimm libnvdimm/pmem: Fix blk_cleanup_disk() usage 2021-06-09 09:09:22 -06:00
nvme for-5.14/drivers-2021-06-29 2021-06-30 12:21:16 -07:00
nvmem
of of: overlay: Remove redundant assignment to ret 2021-05-03 13:57:56 -05:00
opp opp: Allow required-opps to be used for non genpd use cases 2021-06-18 09:00:55 +05:30
parisc
parport treewide: remove editor modelines and cruft 2021-05-07 00:26:34 -07:00
pci hyperv-next for 5.14 2021-06-29 11:21:35 -07:00
pcmcia
perf drivers/perf: fix the missed ida_simple_remove() in ddr_perf_probe() 2021-06-17 19:45:24 +01:00
phy phy: Sparx5 Eth SerDes: check return value after calling platform_get_resource() 2021-06-03 11:18:19 +05:30
pinctrl pinctrl: stm32: fix the reported number of GPIO lines per bank 2021-06-18 14:56:54 +02:00
platform Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hid/hid 2021-06-30 11:31:32 -07:00
pnp PNP: pnpbios: Use list_for_each_entry() instead of list_for_each() 2021-06-09 15:04:30 +02:00
power power supply and reset changes for the v5.13 series 2021-04-28 15:43:58 -07:00
powercap
pps TTY/Serial driver updates for 5.13-rc1 2021-04-26 11:20:10 -07:00
ps3
ptp ptp: fix format string mismatch in ptp_sysfs.c 2021-07-05 10:10:41 -07:00
pwm pwm: Changes for v5.13-rc1 2021-05-05 12:53:16 -07:00
rapidio rapidio: handle create_workqueue() failure 2021-05-13 18:32:19 +02:00
ras
regulator Merge remote-tracking branch 'regulator/for-5.14' into regulator-next 2021-06-23 16:56:31 +01:00
remoteproc remoteproc updates for v5.13 2021-05-04 11:13:33 -07:00
reset pci-v5.13-changes 2021-05-05 13:24:11 -07:00
rpmsg rpmsg: core: Add driver_data for rpmsg_device_id 2021-06-18 13:13:40 -07:00
rtc rtc: mt6397: refine RTC_TC_MTH 2021-06-01 16:44:09 +01:00
s390 Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
sbus
scsi for-5.14/block-2021-06-29 2021-06-30 12:12:56 -07:00
sh The usual updates from the irq departement: 2021-04-26 09:43:16 -07:00
siox
slimbus
soc Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2021-06-28 16:04:56 -07:00
soundwire soundwire: qcom: fix handling of qcom,ports-block-pack-mode 2021-05-13 11:14:13 +05:30
spi Merge remote-tracking branch 'spi/for-5.14' into spi-next 2021-06-25 14:08:26 +01:00
spmi
ssb ssb: use DEVICE_ATTR_ADMIN_RW() helper macro 2021-06-15 13:11:56 +03:00
staging Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
target scsi: target: core: Fix warning on realtime kernels 2021-05-31 22:59:13 -04:00
tc
tee fallthrough fixes for Clang for 5.14-rc1 2021-06-28 20:03:38 -07:00
thermal Scheduler udpates for this cycle: 2021-06-28 12:14:19 -07:00
thunderbolt thunderbolt: usb4: Fix NVM read buffer bounds and offset issue 2021-05-20 11:52:58 +03:00
tty serial: 8250_exar: Avoid NULL pointer dereference at ->exit() 2021-06-09 14:40:48 +02:00
uio uio_hv_generic: Fix another memory leak in error handling paths 2021-05-14 13:26:04 +02:00
usb Networking changes for 5.14. 2021-06-30 15:51:09 -07:00
vdpa {net,vdpa}/mlx5: Configure interface MAC into mpfs L2 table 2021-05-18 23:01:48 -07:00
vfio vfio: use vma_lookup() instead of find_vma_intersection() 2021-06-29 10:53:51 -07:00
vhost net: sock: introduce sk_error_report 2021-06-29 11:28:21 -07:00
video Revert "fb_defio: Remove custom address_space_operations" 2021-06-01 17:38:40 +02:00
virt nitro_enclaves: Fix stale file descriptors on failed usercopy 2021-04-29 19:06:49 +02:00
virtio virtio_balloon: specify page reporting order if needed 2021-06-29 10:53:47 -07:00
visorbus
vlynq
vme
w1 w1: ds28e17: Use module_w1_family to simplify the code 2021-04-10 10:58:21 +02:00
watchdog Updates for the interrupt subsystem: 2021-06-29 12:25:04 -07:00
xen xen/events: reset active flag for lateeoi events later 2021-06-24 12:52:36 +02:00
zorro
Kconfig ide: remove the legacy ide driver 2021-06-16 08:53:58 -06:00
Makefile hyperv-next for 5.14 2021-06-29 11:21:35 -07:00