From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Martin Willi <martin@strongswan.org>,
Marc Kleine-Budde <mkl@pengutronix.de>
Subject: [PATCH 5.4 106/111] can: dev: Move device back to init netns on owning netns delete
Date: Mon, 29 Mar 2021 09:58:54 +0200 [thread overview]
Message-ID: <20210329075618.736747508@linuxfoundation.org> (raw)
In-Reply-To: <20210329075615.186199980@linuxfoundation.org>
From: Martin Willi <martin@strongswan.org>
commit 3a5ca857079ea022e0b1b17fc154f7ad7dbc150f upstream.
When a non-initial netns is destroyed, the usual policy is to delete
all virtual network interfaces contained, but move physical interfaces
back to the initial netns. This keeps the physical interface visible
on the system.
CAN devices are somewhat special, as they define rtnl_link_ops even
if they are physical devices. If a CAN interface is moved into a
non-initial netns, destroying that netns lets the interface vanish
instead of moving it back to the initial netns. default_device_exit()
skips CAN interfaces due to having rtnl_link_ops set. Reproducer:
ip netns add foo
ip link set can0 netns foo
ip netns delete foo
WARNING: CPU: 1 PID: 84 at net/core/dev.c:11030 ops_exit_list+0x38/0x60
CPU: 1 PID: 84 Comm: kworker/u4:2 Not tainted 5.10.19 #1
Workqueue: netns cleanup_net
[<c010e700>] (unwind_backtrace) from [<c010a1d8>] (show_stack+0x10/0x14)
[<c010a1d8>] (show_stack) from [<c086dc10>] (dump_stack+0x94/0xa8)
[<c086dc10>] (dump_stack) from [<c086b938>] (__warn+0xb8/0x114)
[<c086b938>] (__warn) from [<c086ba10>] (warn_slowpath_fmt+0x7c/0xac)
[<c086ba10>] (warn_slowpath_fmt) from [<c0629f20>] (ops_exit_list+0x38/0x60)
[<c0629f20>] (ops_exit_list) from [<c062a5c4>] (cleanup_net+0x230/0x380)
[<c062a5c4>] (cleanup_net) from [<c0142c20>] (process_one_work+0x1d8/0x438)
[<c0142c20>] (process_one_work) from [<c0142ee4>] (worker_thread+0x64/0x5a8)
[<c0142ee4>] (worker_thread) from [<c0148a98>] (kthread+0x148/0x14c)
[<c0148a98>] (kthread) from [<c0100148>] (ret_from_fork+0x14/0x2c)
To properly restore physical CAN devices to the initial netns on owning
netns exit, introduce a flag on rtnl_link_ops that can be set by drivers.
For CAN devices setting this flag, default_device_exit() considers them
non-virtual, applying the usual namespace move.
The issue was introduced in the commit mentioned below, as at that time
CAN devices did not have a dellink() operation.
Fixes: e008b5fc8dc7 ("net: Simplfy default_device_exit and improve batching.")
Link: https://lore.kernel.org/r/20210302122423.872326-1-martin@strongswan.org
Signed-off-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/net/can/dev.c | 1 +
include/net/rtnetlink.h | 2 ++
net/core/dev.c | 2 +-
3 files changed, 4 insertions(+), 1 deletion(-)
--- a/drivers/net/can/dev.c
+++ b/drivers/net/can/dev.c
@@ -1226,6 +1226,7 @@ static void can_dellink(struct net_devic
static struct rtnl_link_ops can_link_ops __read_mostly = {
.kind = "can",
+ .netns_refund = true,
.maxtype = IFLA_CAN_MAX,
.policy = can_policy,
.setup = can_setup,
--- a/include/net/rtnetlink.h
+++ b/include/net/rtnetlink.h
@@ -33,6 +33,7 @@ static inline int rtnl_msg_family(const
*
* @list: Used internally
* @kind: Identifier
+ * @netns_refund: Physical device, move to init_net on netns exit
* @maxtype: Highest device specific netlink attribute number
* @policy: Netlink policy for device specific attribute validation
* @validate: Optional validation function for netlink/changelink parameters
@@ -64,6 +65,7 @@ struct rtnl_link_ops {
size_t priv_size;
void (*setup)(struct net_device *dev);
+ bool netns_refund;
unsigned int maxtype;
const struct nla_policy *policy;
int (*validate)(struct nlattr *tb[],
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -10121,7 +10121,7 @@ static void __net_exit default_device_ex
continue;
/* Leave virtual devices for the generic cleanup */
- if (dev->rtnl_link_ops)
+ if (dev->rtnl_link_ops && !dev->rtnl_link_ops->netns_refund)
continue;
/* Push remaining network devices to init_net */
next prev parent reply other threads:[~2021-03-29 8:25 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-29 7:57 [PATCH 5.4 000/111] 5.4.109-rc1 review Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 001/111] hugetlbfs: hugetlb_fault_mutex_hash() cleanup Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 002/111] net: fec: ptp: avoid register access when ipg clock is disabled Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 003/111] powerpc/4xx: Fix build errors from mfdcr() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 004/111] atm: eni: dont release is never initialized Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 005/111] atm: lanai: dont run lanai_dev_close if not open Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 006/111] Revert "r8152: adjust the settings about MAC clock speed down for RTL8153" Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 007/111] ALSA: hda: ignore invalid NHLT table Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 008/111] ixgbe: Fix memleak in ixgbe_configure_clsu32 Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 009/111] net: tehuti: fix error return code in bdx_probe() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 010/111] net: intel: iavf: fix error return code of iavf_init_get_resources() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 011/111] sun/niu: fix wrong RXMAC_BC_FRM_CNT_COUNT count Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 012/111] gianfar: fix jumbo packets+napi+rx overrun crash Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 013/111] cifs: ask for more credit on async read/write code paths Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 014/111] cpufreq: blacklist Arm Vexpress platforms in cpufreq-dt-platdev Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 015/111] gpiolib: acpi: Add missing IRQF_ONESHOT Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 016/111] nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 017/111] NFS: Correct size calculation for create reply length Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 018/111] net: hisilicon: hns: fix error return code of hns_nic_clear_all_rx_fetch() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 019/111] net: wan: fix error return code of uhdlc_init() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 020/111] net: davicom: Use platform_get_irq_optional() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 021/111] atm: uPD98402: fix incorrect allocation Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 022/111] atm: idt77252: fix null-ptr-dereference Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 023/111] cifs: change noisy error message to FYI Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 024/111] irqchip/ingenic: Add support for the JZ4760 Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 025/111] sparc64: Fix opcode filtering in handling of no fault loads Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 026/111] habanalabs: Call put_pid() when releasing control device Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 027/111] u64_stats,lockdep: Fix u64_stats_init() vs lockdep Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 028/111] regulator: qcom-rpmh: Correct the pmic5_hfsmps515 buck Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 029/111] drm/amd/display: Revert dram_clock_change_latency for DCN2.1 Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 030/111] drm/amdgpu: fb BO should be ttm_bo_type_device Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 031/111] drm/radeon: fix AGP dependency Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 032/111] nvme: add NVME_REQ_CANCELLED flag in nvme_cancel_request() Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 033/111] nvme-fc: return NVME_SC_HOST_ABORTED_CMD when a command has been aborted Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 034/111] nvme-pci: add the DISABLE_WRITE_ZEROES quirk for a Samsung PM1725a Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 035/111] nfs: we dont support removing system.nfs4_acl Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 036/111] block: Suppress uevent for hidden device when removed Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 037/111] ia64: fix ia64_syscall_get_set_arguments() for break-based syscalls Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 038/111] ia64: fix ptrace(PTRACE_SYSCALL_INFO_EXIT) sign Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 039/111] netsec: restore phy power state after controller reset Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 040/111] platform/x86: intel-vbtn: Stop reporting SW_DOCK events Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 041/111] squashfs: fix inode lookup sanity checks Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 042/111] squashfs: fix xattr id and id " Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 043/111] kasan: fix per-page tags for non-page_alloc pages Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 044/111] gcov: fix clang-11+ support Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 045/111] ACPI: video: Add missing callback back for Sony VPCEH3U1E Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 046/111] arm64: dts: ls1046a: mark crypto engine dma coherent Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 047/111] arm64: dts: ls1012a: " Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 048/111] arm64: dts: ls1043a: " Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 049/111] ARM: dts: at91-sama5d27_som1: fix phy address to 7 Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 050/111] integrity: double check iint_cache was initialized Greg Kroah-Hartman
2021-03-29 7:57 ` [PATCH 5.4 051/111] dm verity: fix DM_VERITY_OPTS_MAX value Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 052/111] dm ioctl: fix out of bounds array access when no devices Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 053/111] bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 054/111] veth: Store queue_mapping independently of XDP prog presence Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 055/111] libbpf: Fix INSTALL flag order Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 056/111] net/mlx5e: Dont match on Geneve options in case option masks are all zero Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 057/111] ipv6: fix suspecious RCU usage warning Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 058/111] macvlan: macvlan_count_rx() needs to be aware of preemption Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 059/111] net: sched: validate stab values Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 060/111] net: dsa: bcm_sf2: Qualify phydev->dev_flags based on port Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 061/111] igc: Fix Pause Frame Advertising Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 062/111] igc: Fix Supported Pause Frame Link Setting Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 063/111] e1000e: add rtnl_lock() to e1000_reset_task Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 064/111] e1000e: Fix error handling in e1000_set_d0_lplu_state_82571 Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 065/111] net/qlcnic: Fix a use after free in qlcnic_83xx_get_minidump_template Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 066/111] ftgmac100: Restart MAC HW once Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 067/111] selftests/bpf: Set gopt opt_class to 0 if get tunnel opt failed Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 068/111] netfilter: ctnetlink: fix dump of the expect mask attribute Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 069/111] tcp: relookup sock for RST+ACK packets handled by obsolete req sock Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 070/111] can: peak_usb: add forgotten supported devices Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 071/111] can: flexcan: flexcan_chip_freeze(): fix chip freeze for missing bitrate Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 072/111] can: kvaser_pciefd: Always disable bus load reporting Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 073/111] can: c_can_pci: c_can_pci_remove(): fix use-after-free Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 074/111] can: c_can: move runtime PM enable/disable to c_can_platform Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 075/111] can: m_can: m_can_do_rx_poll(): fix extraneous msg loss warning Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 076/111] can: m_can: m_can_rx_peripheral(): fix RX being blocked by errors Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 077/111] mac80211: fix rate mask reset Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 078/111] nfp: flower: fix pre_tun mask id allocation Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 079/111] libbpf: Use SOCK_CLOEXEC when opening the netlink socket Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 080/111] octeontx2-af: Fix irq free in rvu teardown Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 081/111] octeontx2-af: fix infinite loop in unmapping NPC counter Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 082/111] net: cdc-phonet: fix data-interface release on probe failure Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 083/111] r8152: limit the RX buffer size of RTL8153A for USB 2.0 Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 084/111] net: stmmac: dwmac-sun8i: Provide TX and RX fifo sizes Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 085/111] selftests: forwarding: vxlan_bridge_1d: Fix vxlan ecn decapsulate value Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 086/111] libbpf: Fix BTF dump of pointer-to-array-of-struct Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 087/111] drm/msm: fix shutdown hook in case GPU components failed to bind Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 088/111] arm64: kdump: update ppos when reading elfcorehdr Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 089/111] PM: runtime: Defer suspending suppliers Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 090/111] net/mlx5e: Fix error path for ethtool set-priv-flag Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 091/111] PM: EM: postpone creating the debugfs dir till fs_initcall Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 092/111] RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening server Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 093/111] bpf: Dont do bpf_cgroup_storage_set() for kuprobe/tp programs Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 094/111] Revert "netfilter: x_tables: Switch synchronization to RCU" Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 095/111] netfilter: x_tables: Use correct memory barriers Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 096/111] Revert "netfilter: x_tables: Update remaining dereference to RCU" Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 097/111] ACPI: scan: Rearrange memory allocation in acpi_device_add() Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 098/111] ACPI: scan: Use unique number for instance_no Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 099/111] perf auxtrace: Fix auxtrace queue conflict Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 100/111] block: recalculate segment count for multi-segment discards correctly Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 101/111] scsi: Revert "qla2xxx: Make sure that aborted commands are freed" Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 102/111] scsi: qedi: Fix error return code of qedi_alloc_global_queues() Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 103/111] scsi: mpt3sas: Fix error return code of mpt3sas_base_attach() Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 104/111] locking/mutex: Fix non debug version of mutex_lock_io_nested() Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 105/111] x86/mem_encrypt: Correct physical address calculation in __set_clr_pte_enc() Greg Kroah-Hartman
2021-03-29 7:58 ` Greg Kroah-Hartman [this message]
2021-03-29 7:58 ` [PATCH 5.4 107/111] net: dsa: b53: VLAN filtering is global to all users Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 108/111] net: qrtr: fix a kernel-infoleak in qrtr_recvmsg() Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 109/111] mac80211: fix double free in ibss_leave Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 110/111] ext4: add reclaim checks to xattr code Greg Kroah-Hartman
2021-03-29 7:58 ` [PATCH 5.4 111/111] can: peak_usb: Revert "can: peak_usb: add forgotten supported devices" Greg Kroah-Hartman
2021-03-29 17:36 ` [PATCH 5.4 000/111] 5.4.109-rc1 review Florian Fainelli
2021-03-29 21:33 ` Guenter Roeck
2021-03-30 1:10 ` Samuel Zou
2021-03-30 1:27 ` Shuah Khan
2021-03-30 5:50 ` Naresh Kamboju
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=20210329075618.736747508@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin@strongswan.org \
--cc=mkl@pengutronix.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).