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, Eric Dumazet <edumazet@google.com>,
	Cong Wang <cong.wang@bytedance.com>,
	syzbot <syzkaller@googlegroups.com>,
	Jakub Kicinski <kuba@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH 4.19 28/49] ipmr,ip6mr: acquire RTNL before calling ip[6]mr_free_table() on failure path
Date: Mon, 14 Feb 2022 10:25:54 +0100	[thread overview]
Message-ID: <20220214092449.219707158@linuxfoundation.org> (raw)
In-Reply-To: <20220214092448.285381753@linuxfoundation.org>

From: Eric Dumazet <edumazet@google.com>

[ Upstream commit 5611a00697c8ecc5aad04392bea629e9d6a20463 ]

ip[6]mr_free_table() can only be called under RTNL lock.

RTNL: assertion failed at net/core/dev.c (10367)
WARNING: CPU: 1 PID: 5890 at net/core/dev.c:10367 unregister_netdevice_many+0x1246/0x1850 net/core/dev.c:10367
Modules linked in:
CPU: 1 PID: 5890 Comm: syz-executor.2 Not tainted 5.16.0-syzkaller-11627-g422ee58dc0ef #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
RIP: 0010:unregister_netdevice_many+0x1246/0x1850 net/core/dev.c:10367
Code: 0f 85 9b ee ff ff e8 69 07 4b fa ba 7f 28 00 00 48 c7 c6 00 90 ae 8a 48 c7 c7 40 90 ae 8a c6 05 6d b1 51 06 01 e8 8c 90 d8 01 <0f> 0b e9 70 ee ff ff e8 3e 07 4b fa 4c 89 e7 e8 86 2a 59 fa e9 ee
RSP: 0018:ffffc900046ff6e0 EFLAGS: 00010286
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
RDX: ffff888050f51d00 RSI: ffffffff815fa008 RDI: fffff520008dfece
RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
R10: ffffffff815f3d6e R11: 0000000000000000 R12: 00000000fffffff4
R13: dffffc0000000000 R14: ffffc900046ff750 R15: ffff88807b7dc000
FS:  00007f4ab736e700(0000) GS:ffff8880b9d00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fee0b4f8990 CR3: 000000001e7d2000 CR4: 00000000003506e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <TASK>
 mroute_clean_tables+0x244/0xb40 net/ipv6/ip6mr.c:1509
 ip6mr_free_table net/ipv6/ip6mr.c:389 [inline]
 ip6mr_rules_init net/ipv6/ip6mr.c:246 [inline]
 ip6mr_net_init net/ipv6/ip6mr.c:1306 [inline]
 ip6mr_net_init+0x3f0/0x4e0 net/ipv6/ip6mr.c:1298
 ops_init+0xaf/0x470 net/core/net_namespace.c:140
 setup_net+0x54f/0xbb0 net/core/net_namespace.c:331
 copy_net_ns+0x318/0x760 net/core/net_namespace.c:475
 create_new_namespaces+0x3f6/0xb20 kernel/nsproxy.c:110
 copy_namespaces+0x391/0x450 kernel/nsproxy.c:178
 copy_process+0x2e0c/0x7300 kernel/fork.c:2167
 kernel_clone+0xe7/0xab0 kernel/fork.c:2555
 __do_sys_clone+0xc8/0x110 kernel/fork.c:2672
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x44/0xae
RIP: 0033:0x7f4ab89f9059
Code: Unable to access opcode bytes at RIP 0x7f4ab89f902f.
RSP: 002b:00007f4ab736e118 EFLAGS: 00000206 ORIG_RAX: 0000000000000038
RAX: ffffffffffffffda RBX: 00007f4ab8b0bf60 RCX: 00007f4ab89f9059
RDX: 0000000020000280 RSI: 0000000020000270 RDI: 0000000040200000
RBP: 00007f4ab8a5308d R08: 0000000020000300 R09: 0000000020000300
R10: 00000000200002c0 R11: 0000000000000206 R12: 0000000000000000
R13: 00007ffc3977cc1f R14: 00007f4ab736e300 R15: 0000000000022000
 </TASK>

Fixes: f243e5a7859a ("ipmr,ip6mr: call ip6mr_free_table() on failure path")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Cong Wang <cong.wang@bytedance.com>
Reported-by: syzbot <syzkaller@googlegroups.com>
Link: https://lore.kernel.org/r/20220208053451.2885398-1-eric.dumazet@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 net/ipv4/ipmr.c  | 2 ++
 net/ipv6/ip6mr.c | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index d235478d9ca3c..2085af224a416 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -265,7 +265,9 @@ static int __net_init ipmr_rules_init(struct net *net)
 	return 0;
 
 err2:
+	rtnl_lock();
 	ipmr_free_table(mrt);
+	rtnl_unlock();
 err1:
 	fib_rules_unregister(ops);
 	return err;
diff --git a/net/ipv6/ip6mr.c b/net/ipv6/ip6mr.c
index 35e7092eceb37..e9eb917342b85 100644
--- a/net/ipv6/ip6mr.c
+++ b/net/ipv6/ip6mr.c
@@ -245,7 +245,9 @@ static int __net_init ip6mr_rules_init(struct net *net)
 	return 0;
 
 err2:
+	rtnl_lock();
 	ip6mr_free_table(mrt);
+	rtnl_unlock();
 err1:
 	fib_rules_unregister(ops);
 	return err;
-- 
2.34.1




  parent reply	other threads:[~2022-02-14  9:39 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-14  9:25 [PATCH 4.19 00/49] 4.19.230-rc1 review Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 01/49] integrity: check the return value of audit_log_start() Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 02/49] ima: Remove ima_policy file before directory Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 03/49] ima: Allow template selection with ima_template[_fmt]= after ima_hash= Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 04/49] mmc: sdhci-of-esdhc: Check for error num after setting mask Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 05/49] net: phy: marvell: Fix MDI-x polarity setting in 88e1118-compatible PHYs Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 06/49] NFS: Fix initialisation of nfs_client cl_flags field Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 07/49] NFSD: Clamp WRITE offsets Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 08/49] NFSD: Fix offset type in I/O trace points Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 09/49] NFSv4 only print the label when its queried Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 10/49] nfs: nfs4clinet: check the return value of kstrdup() Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 11/49] NFSv4.1: Fix uninitialised variable in devicenotify Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 12/49] NFSv4 remove zero number of fs_locations entries error check Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 13/49] NFSv4 expose nfs_parse_server_name function Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 14/49] net: sched: Clarify error message when qdisc kind is unknown Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 15/49] scsi: target: iscsi: Make sure the np under each tpg is unique Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 16/49] usb: dwc2: gadget: dont try to disable ep0 in dwc2_hsotg_suspend Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 17/49] net: stmmac: dwmac-sun8i: use return val of readl_poll_timeout() Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 18/49] bpf: Add kconfig knob for disabling unpriv bpf by default Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 19/49] ARM: dts: imx23-evk: Remove MX23_PAD_SSP1_DETECT from hog group Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 20/49] net: bridge: fix stale eth hdr pointer in br_dev_xmit Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 21/49] perf probe: Fix ppc64 perf probe add events failed case Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 22/49] ARM: dts: meson: Fix the UART compatible strings Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 23/49] staging: fbtft: Fix error path in fbtft_driver_module_init() Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 24/49] ARM: dts: imx6qdl-udoo: Properly describe the SD card detect Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 25/49] usb: f_fs: Fix use-after-free for epfile Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 26/49] ixgbevf: Require large buffers for build_skb on 82599VF Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 27/49] bonding: pair enable_port with slave_arr_updates Greg Kroah-Hartman
2022-02-14  9:25 ` Greg Kroah-Hartman [this message]
2022-02-14  9:25 ` [PATCH 4.19 29/49] net: do not keep the dst cache when uncloning an skb dst and its metadata Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 30/49] net: fix a memleak " Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 31/49] veth: fix races around rq->rx_notify_masked Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 32/49] tipc: rate limit warning for received illegal binding update Greg Kroah-Hartman
2022-02-14  9:25 ` [PATCH 4.19 33/49] net: amd-xgbe: disable interrupts during pci removal Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 34/49] vt_ioctl: fix array_index_nospec in vt_setactivate Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 35/49] vt_ioctl: add array_index_nospec to VT_ACTIVATE Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 36/49] n_tty: wake up poll(POLLRDNORM) on receiving data Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 37/49] usb: ulpi: Move of_node_put to ulpi_dev_release Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 38/49] usb: ulpi: Call of_node_put correctly Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 39/49] usb: dwc3: gadget: Prevent core from processing stale TRBs Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 40/49] USB: gadget: validate interface OS descriptor requests Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 41/49] usb: gadget: rndis: check size of RNDIS_MSG_SET command Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 42/49] USB: serial: ftdi_sio: add support for Brainboxes US-159/235/320 Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 43/49] USB: serial: option: add ZTE MF286D modem Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 44/49] USB: serial: ch341: add support for GW Instek USB2.0-Serial devices Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 45/49] USB: serial: cp210x: add NCR Retail IO box id Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 46/49] USB: serial: cp210x: add CPI Bulk Coin Recycler id Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 47/49] seccomp: Invalidate seccomp mode to catch death failures Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 48/49] hwmon: (dell-smm) Speed up setting of fan speed Greg Kroah-Hartman
2022-02-14  9:26 ` [PATCH 4.19 49/49] perf: Fix list corruption in perf_cgroup_switch() Greg Kroah-Hartman
2022-02-14 11:35 ` [PATCH 4.19 00/49] 4.19.230-rc1 review Pavel Machek
2022-02-14 14:22 ` Jon Hunter
2022-02-14 18:50 ` Jeffrin Thalakkottoor
2022-02-14 20:38 ` Slade Watkins
2022-02-14 22:32 ` Shuah Khan
2022-02-15  1:51 ` Guenter Roeck
2022-02-15  9:19 ` Naresh Kamboju
2022-02-15 15:42 ` Sudip Mukherjee
2022-02-16  0:52 ` Samuel Zou

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=20220214092449.219707158@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=cong.wang@bytedance.com \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=syzkaller@googlegroups.com \
    /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.