All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Ido Schimmel <idosch@mellanox.com>,
	Jiri Pirko <jiri@mellanox.com>,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH 5.7 59/79] vxlan: Ensure FDB dump is performed under RCU
Date: Mon, 10 Aug 2020 17:21:18 +0200	[thread overview]
Message-ID: <20200810151815.164777566@linuxfoundation.org> (raw)
In-Reply-To: <20200810151812.114485777@linuxfoundation.org>

From: Ido Schimmel <idosch@mellanox.com>

[ Upstream commit b5141915b5aec3b29a63db869229e3741ebce258 ]

The commit cited below removed the RCU read-side critical section from
rtnl_fdb_dump() which means that the ndo_fdb_dump() callback is invoked
without RCU protection.

This results in the following warning [1] in the VXLAN driver, which
relied on the callback being invoked from an RCU read-side critical
section.

Fix this by calling rcu_read_lock() in the VXLAN driver, as already done
in the bridge driver.

[1]
WARNING: suspicious RCU usage
5.8.0-rc4-custom-01521-g481007553ce6 #29 Not tainted
-----------------------------
drivers/net/vxlan.c:1379 RCU-list traversed in non-reader section!!

other info that might help us debug this:

rcu_scheduler_active = 2, debug_locks = 1
1 lock held by bridge/166:
 #0: ffffffff85a27850 (rtnl_mutex){+.+.}-{3:3}, at: netlink_dump+0xea/0x1090

stack backtrace:
CPU: 1 PID: 166 Comm: bridge Not tainted 5.8.0-rc4-custom-01521-g481007553ce6 #29
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-2.fc32 04/01/2014
Call Trace:
 dump_stack+0x100/0x184
 lockdep_rcu_suspicious+0x153/0x15d
 vxlan_fdb_dump+0x51e/0x6d0
 rtnl_fdb_dump+0x4dc/0xad0
 netlink_dump+0x540/0x1090
 __netlink_dump_start+0x695/0x950
 rtnetlink_rcv_msg+0x802/0xbd0
 netlink_rcv_skb+0x17a/0x480
 rtnetlink_rcv+0x22/0x30
 netlink_unicast+0x5ae/0x890
 netlink_sendmsg+0x98a/0xf40
 __sys_sendto+0x279/0x3b0
 __x64_sys_sendto+0xe6/0x1a0
 do_syscall_64+0x54/0xa0
 entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7fe14fa2ade0
Code: Bad RIP value.
RSP: 002b:00007fff75bb5b88 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
RAX: ffffffffffffffda RBX: 00005614b1ba0020 RCX: 00007fe14fa2ade0
RDX: 000000000000011c RSI: 00007fff75bb5b90 RDI: 0000000000000003
RBP: 00007fff75bb5b90 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 00005614b1b89160
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000

Fixes: 5e6d24358799 ("bridge: netlink dump interface at par with brctl")
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/net/vxlan.c |    6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -1225,6 +1225,7 @@ static int vxlan_fdb_dump(struct sk_buff
 	for (h = 0; h < FDB_HASH_SIZE; ++h) {
 		struct vxlan_fdb *f;
 
+		rcu_read_lock();
 		hlist_for_each_entry_rcu(f, &vxlan->fdb_head[h], hlist) {
 			struct vxlan_rdst *rd;
 
@@ -1237,12 +1238,15 @@ static int vxlan_fdb_dump(struct sk_buff
 						     cb->nlh->nlmsg_seq,
 						     RTM_NEWNEIGH,
 						     NLM_F_MULTI, rd);
-				if (err < 0)
+				if (err < 0) {
+					rcu_read_unlock();
 					goto out;
+				}
 skip:
 				*idx += 1;
 			}
 		}
+		rcu_read_unlock();
 	}
 out:
 	return err;



  parent reply	other threads:[~2020-08-10 15:39 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-10 15:20 [PATCH 5.7 00/79] 5.7.15-rc1 review Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 01/79] scsi: ufs: Fix and simplify setup_xfer_req variant operation Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 02/79] USB: serial: qcserial: add EM7305 QDL product ID Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 03/79] USB: iowarrior: fix up report size handling for some devices Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 04/79] usb: xhci: define IDs for various ASMedia host controllers Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 05/79] usb: xhci: Fix ASMedia ASM1142 DMA addressing Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 06/79] Revert "ALSA: hda: call runtime_allow() for all hda controllers" Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 07/79] ALSA: hda/realtek: Add alc269/alc662 pin-tables for Loongson-3 laptops Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 08/79] ALSA: hda/ca0132 - Add new quirk ID for Recon3D Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 09/79] ALSA: hda/ca0132 - Fix ZxR Headphone gain control get value Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 10/79] ALSA: hda/ca0132 - Fix AE-5 microphone selection commands Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 11/79] ALSA: seq: oss: Serialize ioctls Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 12/79] staging: android: ashmem: Fix lockdep warning for write operation Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 13/79] staging: rtl8712: handle firmware load failure Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 14/79] Staging: rtl8188eu: rtw_mlme: Fix uninitialized variable authmode Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 15/79] Bluetooth: Fix slab-out-of-bounds read in hci_extended_inquiry_result_evt() Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 16/79] Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_evt() Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 17/79] Bluetooth: Prevent out-of-bounds read in hci_inquiry_result_with_rssi_evt() Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 18/79] omapfb: dss: Fix max fclk divider for omap36xx Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 19/79] binder: Prevent context manager from incrementing ref 0 Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 20/79] Smack: fix use-after-free in smk_write_relabel_self() Greg Kroah-Hartman
2020-08-10 15:20 ` [Cocci] [PATCH 5.7 21/79] scripts: add dummy report mode to add_namespace.cocci Greg Kroah-Hartman
2020-08-10 15:20   ` Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 22/79] lkdtm/heap: Avoid edge and middle of slabs Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 23/79] vgacon: Fix for missing check in scrollback handling Greg Kroah-Hartman
2020-08-10 15:20   ` Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 24/79] mtd: properly check all write ioctls for permissions Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 25/79] leds: wm831x-status: fix use-after-free on unbind Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 26/79] leds: lm36274: " Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 27/79] leds: da903x: " Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 28/79] leds: lm3533: " Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 29/79] leds: 88pm860x: " Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 30/79] gpio: max77620: Fix missing release of interrupt Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 31/79] bpf: Fix NULL pointer dereference in __btf_resolve_helper_id() Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 32/79] net/9p: validate fds in p9_fd_open Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 33/79] drm/nouveau/kms/tu102: wait for core update to complete when assigning windows Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 34/79] drm/nouveau/fbcon: fix module unload when fbcon init has failed for some reason Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 35/79] drm/nouveau/fbcon: zero-initialise the mode_cmd2 structure Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 36/79] io_uring: fix lockup in io_fail_links() Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 37/79] nvme-pci: prevent SK hynix PC400 from using Write Zeroes command Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 38/79] drm/bridge/adv7511: set the bridge type properly Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 39/79] drm/panel: Fix auo, kd101n80-45na horizontal noise on edges of panel Greg Kroah-Hartman
2020-08-10 15:20 ` [PATCH 5.7 40/79] drm/drm_fb_helper: fix fbdev with sparc64 Greg Kroah-Hartman
2020-08-10 15:20   ` Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 41/79] net: mscc: ocelot: fix hardware timestamp dequeue logic Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 42/79] i2c: slave: improve sanity check when registering Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 43/79] i2c: slave: add sanity check when unregistering Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 44/79] usb: hso: check for return value in hso_serial_common_create() Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 45/79] net: ethernet: mtk_eth_soc: Always call mtk_gmac0_rgmii_adjust() for mt7623 Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 46/79] ALSA: hda: fix NULL pointer dereference during suspend Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 47/79] firmware: Fix a reference count leak Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 48/79] cfg80211: check vendor command doit pointer before use Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 49/79] igb: reinit_locked() should be called with rtnl_lock Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 50/79] atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 51/79] tools lib traceevent: Fix memory leak in process_dynamic_array_len Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 52/79] xattr: break delegations in {set,remove}xattr Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 53/79] Revert "powerpc/kasan: Fix shadow pages allocation failure" Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 54/79] PCI: tegra: Revert tegra124 raw_violation_fixup Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 55/79] ipv4: Silence suspicious RCU usage warning Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 56/79] ipv6: fix memory leaks on IPV6_ADDRFORM path Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 57/79] ipv6: Fix nexthop refcnt leak when creating ipv6 route info Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 58/79] rxrpc: Fix race between recvmsg and sendmsg on immediate call failure Greg Kroah-Hartman
2020-08-10 15:21 ` Greg Kroah-Hartman [this message]
2020-08-10 15:21 ` [PATCH 5.7 60/79] net: lan78xx: replace bogus endpoint lookup Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 61/79] rhashtable: Restore RCU marking on rhash_lock_head Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 62/79] devlink: ignore -EOPNOTSUPP errors on dumpit Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 63/79] appletalk: Fix atalk_proc_init() return path Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 64/79] dpaa2-eth: Fix passing zero to PTR_ERR warning Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 65/79] hv_netvsc: do not use VF device if link is down Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 66/79] net: bridge: clear bridges private skb space on xmit Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 67/79] net: gre: recompute gre csum for sctp over gre tunnels Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 68/79] net: macb: Properly handle phylink on at91sam9x Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 69/79] net: mvpp2: fix memory leak in mvpp2_rx Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 70/79] net/sched: act_ct: fix miss set mru for ovs after defrag in act_ct Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 71/79] net: thunderx: use spin_lock_bh in nicvf_set_rx_mode_task() Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 72/79] openvswitch: Prevent kernel-infoleak in ovs_ct_put_key() Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 73/79] Revert "vxlan: fix tos value before xmit" Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 74/79] selftests/net: relax cpu affinity requirement in msg_zerocopy test Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 75/79] tcp: apply a floor of 1 for RTT samples from TCP timestamps Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 76/79] mptcp: be careful on subflow creation Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 77/79] mptcp: fix bogus sendmsg() return code under pressure Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 78/79] ima: move APPRAISE_BOOTPARAM dependency on ARCH_POLICY to runtime Greg Kroah-Hartman
2020-08-10 15:21 ` [PATCH 5.7 79/79] arm64: kaslr: Use standard early random function Greg Kroah-Hartman
2020-08-10 23:07 ` [PATCH 5.7 00/79] 5.7.15-rc1 review Shuah Khan
2020-08-11  7:10 ` Naresh Kamboju
2020-08-11  7:57 ` Jon Hunter
2020-08-11 14:23 ` Guenter Roeck

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200810151815.164777566@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=idosch@mellanox.com \
    --cc=jiri@mellanox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.