Martin Willi
3ec3f89169
can: dev: Move device back to init netns on owning netns delete
...
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: e008b5fc8d ("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>
2021-03-30 14:41:42 +02:00
..
accessibility
acpi
ACPI: scan: Use unique number for instance_no
2021-03-30 14:41:41 +02:00
amba
amba: Fix resource leak for drivers without .remove
2021-03-03 17:44:38 +01:00
android
binder: Prevent context manager from incrementing ref 0
2020-08-21 11:01:55 +02:00
ata
ata: ahci_brcm: Add back regulators management
2021-03-03 17:44:35 +01:00
atm
atm: idt77252: fix null-ptr-dereference
2021-03-30 14:41:39 +02:00
auxdisplay
base
Revert "device property: Keep secondary firmware node secondary by type"
2021-01-12 19:49:05 +01:00
bcma
bcma: fix incorrect update of BCMA_CORE_PCI_MDIO_DATA
2020-01-29 10:24:31 +01:00
block
block: rsxx: fix error return code of rsxx_pci_probe()
2021-03-17 16:10:18 +01:00
bluetooth
Bluetooth: btusb: fix PM leak in error case of setup
2020-01-12 11:24:16 +01:00
bus
bus: omap_l3_noc: mark l3 irqs as IRQF_NO_THREAD
2021-03-30 14:41:40 +02:00
cdrom
cdrom: respect device capabilities during opening action
2020-01-04 13:41:02 +01:00
char
random: fix the RNDRESEEDCRNG ioctl
2021-03-03 17:44:32 +01:00
clk
clk: meson: clk-pll: fix initializing the old rate (fallback) for a PLL
2021-03-03 17:44:36 +01:00
clocksource
clocksource/drivers/mxs_timer: Add missing semicolon when DEBUG is defined
2021-03-03 17:44:37 +01:00
connector
cpufreq
cpufreq: powernow-k8: pass policy rather than use cpufreq_cpu_get()
2021-01-17 13:57:54 +01:00
cpuidle
cpuidle: Fix three reference count leaks
2020-06-20 10:24:18 +02:00
crypto
crypto: omap-aes - Fix PM disable depth imbalance in omap_aes_probe
2020-12-29 13:44:55 +01:00
dax
dca
devfreq
PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out
2020-10-01 20:40:02 +02:00
dio
dma
dmaengine: fsldma: Fix a resource leak in an error handling path of the probe function
2021-03-03 17:44:36 +01:00
dma-buf
dma-buf: Fix memory leak in sync_file_merge()
2019-12-21 10:42:32 +01:00
edac
EDAC/i5100: Fix error handling order in i5100_init_one()
2020-10-29 09:05:32 +01:00
eisa
extcon
extcon: max77693: Fix modalias string
2020-12-29 13:45:00 +01:00
firewire
net: add annotations on hh->hh_len lockless accesses
2020-01-12 11:24:19 +01:00
firmware
efi: Make it possible to disable efivar_ssdt entirely
2020-07-09 09:35:57 +02:00
fmc
fpga
gpio
gpio: pcf857x: Fix missing first interrupt
2021-03-03 17:44:44 +01:00
gpu
drm/msm/dsi: Correct io_start for MSM8994 (20nm PHY)
2021-03-03 17:44:39 +01:00
hid
HID: core: detect and skip invalid inputs to snto32()
2021-03-03 17:44:36 +01:00
hsi
HSI: omap_ssi: Don't jump to free ID in ssi_add_controller()
2020-12-29 13:44:56 +01:00
hv
Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload
2020-09-23 08:46:15 +02:00
hwmon
hwmon: (lm90) Fix max6658 sporadic wrong temperature reading
2021-03-17 16:10:18 +01:00
hwspinlock
hwtracing
stm class: Fix module init return on allocation failure
2021-01-30 13:27:14 +01:00
i2c
i2c: brcmstb: Fix brcmstd_send_i2c_cmd condition
2021-03-03 17:44:40 +01:00
ide
block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
2020-09-12 11:47:36 +02:00
idle
iio
iio: adis16400: Fix an error code in adis16400_initial_setup()
2021-03-24 10:59:24 +01:00
infiniband
RDMA/cxgb4: Fix adapter LE hash errors while destroying ipv6 listening server
2021-03-30 14:41:41 +02:00
input
Input: i8042 - add ASUS Zenbook Flip to noselftest list
2021-03-03 17:44:41 +01:00
iommu
iommu/amd: Fix sleeping in atomic in increase_address_space()
2021-03-11 13:48:03 +01:00
ipack
irqchip
irqchip/alpine-msi: Fix freeing of interrupts on allocation error path
2020-12-29 13:45:00 +01:00
isdn
misdn: dsp: select CONFIG_BITREVERSE
2021-01-23 15:38:17 +01:00
leds
leds: trigger: fix potential deadlock with libata
2021-02-03 23:19:50 +01:00
lguest
lightnvm
macintosh
drivers/macintosh: Fix memleak in windfarm_pm112 driver
2020-06-20 10:24:21 +02:00
mailbox
mcb
md
dm table: fix DAX iterate_devices based device capability checks
2021-03-11 13:48:03 +01:00
media
media: usbtv: Fix deadlock on suspend
2021-03-17 16:10:14 +01:00
memory
memory: emif: Remove bogus debugfs error handling
2020-11-10 10:23:55 +01:00
memstick
memstick: r592: Fix error return in r592_probe()
2020-12-29 13:44:58 +01:00
message
scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove()
2020-11-10 10:23:57 +01:00
mfd
mfd: wm831x-auxadc: Prevent use after free in wm831x_auxadc_read_irq()
2021-03-03 17:44:38 +01:00
misc
misc: eeprom_93xx46: Add quirk to support Microchip 93LC46B eeprom
2021-03-11 13:48:03 +01:00
mmc
mmc: core: Fix partition switch time for eMMC
2021-03-17 16:10:15 +01:00
mtd
mtd: spi-nor: hisi-sfc: Put child node np on error path
2021-03-03 17:44:43 +01:00
net
can: dev: Move device back to init netns on owning netns delete
2021-03-30 14:41:42 +02:00
nfc
nfc: s3fwrn5: Release the nfc firmware
2020-12-29 13:45:00 +01:00
ntb
NTB: hw: amd: fix an issue about leak system resources
2020-10-29 09:05:41 +01:00
nubus
nvdimm
libnvdimm/dimm: Avoid race between probe and available_slots_show()
2021-03-03 17:44:44 +01:00
nvme
nvmet: don't check iosqes,iocqes for discovery controllers
2021-03-24 10:59:23 +01:00
nvmem
nvmem: qfprom: remove incorrect write support
2020-06-11 09:22:22 +02:00
of
of/fdt: Make sure no-map does not remove already reserved regions
2021-03-03 17:44:37 +01:00
oprofile
parisc
parisc: mask out enable and reserved bits from sba imask
2020-08-21 11:02:06 +02:00
parport
parport: load lowlevel driver if ports not found
2020-01-04 13:39:55 +01:00
pci
PCI: rpadlpar: Fix potential drc_name corruption in store functions
2021-03-24 10:59:24 +01:00
pcmcia
perf
phy
phy: tegra: xusb: Fix dangling pointer on probe failure
2020-12-02 08:31:27 +01:00
pinctrl
pinctrl: falcon: add missing put_device() call in pinctrl_falcon_probe()
2020-12-29 13:44:58 +01:00
platform
platform/x86: acer-wmi: Add new force_caps module parameter
2021-03-11 13:48:03 +01:00
pnp
power
power: reset: at91-sama5d2_shdwc: fix wkupdbc mask
2021-03-03 17:44:37 +01:00
powercap
powercap: restrict energy meter to root access
2020-11-10 21:04:57 +01:00
pps
ps3
powerpc/ps3: use dma_mapping_error()
2020-12-29 13:45:00 +01:00
ptp
ptp: free ptp device pin descriptors properly
2020-05-20 08:15:33 +02:00
pwm
pwm: rockchip: rockchip_pwm_probe(): Remove superfluous clk_unprepare()
2021-03-03 17:44:39 +01:00
rapidio
rapidio: fix the missed put_device() for rio_mport_add_riodev
2020-10-29 09:05:39 +01:00
ras
regulator
regulator: axp20x: Fix reference cout leak
2021-03-03 17:44:37 +01:00
remoteproc
remoteproc: qcom_q6v5_mss: Validate MBA firmware size before load
2021-02-23 13:59:14 +01:00
reset
rpmsg
rtc
rtc: rx8010: don't modify the global rtc ops
2020-11-10 10:23:59 +01:00
s390
s390/dasd: fix hanging DASD driver unbind
2021-03-17 16:10:15 +01:00
sbus
scsi
scsi: lpfc: Fix some error codes in debugfs
2021-03-24 10:59:24 +01:00
sfi
sh
sn
soc
soc: qcom: smp2p: Safely acquire spinlock without IRQs
2020-12-29 13:45:07 +01:00
spi
spi: pxa2xx: Fix the controller numbering for Wildcat Point
2021-03-03 17:44:38 +01:00
spmi
ssb
staging
staging: comedi: pcl818: Fix endian problem for AI command data
2021-03-17 16:10:17 +01:00
target
target: add XCOPY target/segment desc sense codes
2021-01-17 13:57:53 +01:00
tc
thermal
thermal: ti-soc-thermal: Fix bogus thermal shutdowns for omap4430
2020-09-12 11:47:34 +02:00
thunderbolt
tty
vt/consolemap: do font sum unsigned
2021-03-07 11:25:57 +01:00
uio
uio_pdrv_genirq: fix use without device tree and no interrupt
2020-07-22 09:10:53 +02:00
usb
idr: add ida_is_empty
2021-03-30 14:41:41 +02:00
uwb
vfio
vfio/pci: Move dummy_resources_list init in vfio_pci_probe()
2021-01-09 13:35:48 +01:00
vhost
vhost_net: fix ubuf refcount incorrectly when sendmsg fails
2021-01-12 19:49:02 +01:00
video
fbdev: aty: SPARC64 requires FB_ATY_CT
2021-03-03 17:44:34 +01:00
virt
drivers/virt/fsl_hypervisor: Fix error handling path
2020-10-29 09:05:35 +01:00
virtio
virtio_ring: Avoid loop when vq is broken in virtqueue_poll
2020-08-26 10:29:05 +02:00
vlynq
vme
vme: bridges: reduce stack usage
2020-02-28 15:42:33 +01:00
w1
w1: mxc_w1: Fix timeout resolution problem leading to bus error
2020-11-10 10:23:57 +01:00
watchdog
watchdog: qcom: Avoid context switch in restart handler
2020-12-29 13:45:01 +01:00
xen
xen/events: avoid handling the same event on two cpus at the same time
2021-03-17 16:10:19 +01:00
zorro
Kconfig
Makefile