Lukas Wunner
d3c9e81500
driver core: Avoid binding drivers to dead devices
...
commit 654888327e9f655a9d55ad477a9583e90e8c9b5c upstream.
Commit 3451a495ef ("driver core: Establish order of operations for
device_add and device_del via bitflag") sought to prevent asynchronous
driver binding to a device which is being removed. It added a
per-device "dead" flag which is checked in the following code paths:
* asynchronous binding in __driver_attach_async_helper()
* synchronous binding in device_driver_attach()
* asynchronous binding in __device_attach_async_helper()
It did *not* check the flag upon:
* synchronous binding in __device_attach()
However __device_attach() may also be called asynchronously from:
deferred_probe_work_func()
bus_probe_device()
device_initial_probe()
__device_attach()
So if the commit's intention was to check the "dead" flag in all
asynchronous code paths, then a check is also necessary in
__device_attach(). Add the missing check.
Fixes: 3451a495ef ("driver core: Establish order of operations for device_add and device_del via bitflag")
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Cc: stable@vger.kernel.org # v5.1+
Cc: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Link: https://lore.kernel.org/r/de88a23a6fe0ef70f7cfd13c8aea9ab51b4edab6.1594214103.git.lukas@wunner.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-08-21 13:05:26 +02:00
..
accessibility
acpi
ACPICA: Do not increment operation_region reference counts for field units
2020-08-19 08:16:05 +02:00
amba
android
binder: Prevent context manager from incrementing ref 0
2020-08-11 15:33:35 +02:00
ata
ata/libata: Fix usage of page address by page_address in ata_scsi_mode_select_xlat function
2020-06-30 15:37:03 -04:00
atm
atm: fix atm_dev refcnt leaks in atmtcp_remove_persistent
2020-08-11 15:33:38 +02:00
auxdisplay
base
driver core: Avoid binding drivers to dead devices
2020-08-21 13:05:26 +02:00
bcma
block
loop: be paranoid on exit and prevent new additions / removals
2020-08-19 08:15:59 +02:00
bluetooth
Bluetooth: hci_serdev: Only unregister device if it was registered
2020-08-19 08:16:16 +02:00
bus
bus: ti-sysc: Add missing quirk flags for usb_host_hs
2020-08-19 08:16:00 +02:00
cdrom
char
tpm: Unify the mismatching TPM space buffer sizes
2020-08-19 08:16:27 +02:00
clk
clk: bcm63xx-gate: fix last clock availability
2020-08-19 08:16:07 +02:00
clocksource
arm64: arch_timer: Disable the compat vdso for cores affected by ARM64_WORKAROUND_1418040
2020-07-22 09:32:51 +02:00
connector
counter
counter: 104-quad-8: Add lock guards - generic interface
2020-05-02 08:48:44 +02:00
cpufreq
cpufreq: dt: fix oops on armada37xx
2020-08-19 08:16:25 +02:00
cpuidle
cpuidle: Fix three reference count leaks
2020-06-22 09:31:10 +02:00
crypto
crypto: cpt - don't sleep of CRYPTO_TFM_REQ_MAY_SLEEP was not specified
2020-08-19 08:16:28 +02:00
dax
device-dax: don't leak kernel memory to user space after unloading kmem
2020-05-27 17:46:48 +02:00
dca
devfreq
PM / devfreq: Add missing locking while setting suspend_freq
2020-05-10 10:31:34 +02:00
dio
dma
dmaengine: ioat setting ioat timeout as module parameter
2020-07-29 10:18:37 +02:00
dma-buf
dmabuf: use spinlock to access dmabuf->name
2020-07-29 10:18:29 +02:00
edac
EDAC: Fix reference count leaks
2020-08-19 08:15:54 +02:00
eisa
extcon
extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()'
2020-06-24 17:50:36 +02:00
firewire
firmware
firmware: arm_scmi: Fix SCMI genpd domain probing
2020-08-19 08:15:55 +02:00
fpga
fpga: dfl: fix bug in port reset handshake
2020-07-29 10:18:31 +02:00
fsi
gnss
gnss: sirf: fix error return code in sirf_probe()
2020-06-22 09:31:20 +02:00
gpio
gpio: arizona: put pm_runtime in case of failure
2020-07-29 10:18:26 +02:00
gpu
drm/ttm/nouveau: don't call tt destroy callback on alloc failure.
2020-08-19 08:16:24 +02:00
greybus
hid
HID: input: Fix devices that return multiple bytes in battery report
2020-08-19 08:15:53 +02:00
hsi
hv
Drivers: hv: vmbus: Ignore CHANNELMSG_TL_CONNECT_RESULT(23)
2020-08-11 15:33:38 +02:00
hwmon
hwmon: (scmi) Fix potential buffer overflow in scmi_hwmon_probe()
2020-07-29 10:18:39 +02:00
hwspinlock
hwtracing
coresight: tmc: Fix TMC mode read in tmc_read_unprepare_etb()
2020-08-19 08:16:14 +02:00
i2c
i2c: slave: add sanity check when unregistering
2020-08-11 15:33:37 +02:00
i3c
ide
idle
iio
iio: dac: ad5592r: fix unbalanced mutex unlocks in ad5592r_read_raw()
2020-08-21 13:05:24 +02:00
infiniband
RDMA/netlink: Remove CAP_NET_RAW check when dump a raw QP
2020-08-19 08:16:17 +02:00
input
Input: elan_i2c - only increment wakeup count on touch
2020-07-29 10:18:38 +02:00
interconnect
iommu
irqdomain/treewide: Free firmware node after domain removal
2020-08-19 08:16:27 +02:00
ipack
ipack: tpci200: fix error return code in tpci200_register()
2020-05-27 17:46:47 +02:00
irqchip
genirq/affinity: Make affinity setting if activated opt-in
2020-08-21 13:05:20 +02:00
isdn
leds
leds: core: Flush scheduled work for system suspend
2020-08-19 08:16:11 +02:00
lightnvm
macintosh
macintosh/via-macii: Access autopoll_devs when inside lock
2020-08-19 08:16:15 +02:00
mailbox
mailbox: zynqmp-ipi: Fix NULL vs IS_ERR() check in zynqmp_ipi_mbox_probe()
2020-06-24 17:50:36 +02:00
mcb
md
bcache: fix overflow in offset_to_stripe()
2020-08-21 13:05:25 +02:00
media
media: vsp1: dl: Fix NULL pointer dereference on unbind
2020-08-21 13:05:25 +02:00
memory
memstick
message
scsi: mptscsih: Fix read sense data size
2020-07-16 08:16:36 +02:00
mfd
mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt
2020-06-24 17:50:33 +02:00
misc
cxl: Fix kobject memleak
2020-08-19 08:16:08 +02:00
mmc
mmc: sdhci-pci-o2micro: Bug fix for O2 host controller Seabird1
2020-08-19 08:16:04 +02:00
mtd
mtd: rawnand: qcom: avoid write to unavailable register
2020-08-19 08:16:25 +02:00
mux
net
net: stmmac: dwmac1000: provide multicast filter fallback
2020-08-21 13:05:25 +02:00
nfc
nfc: s3fwrn5: add missing release on skb in s3fwrn5_recv_frame
2020-08-05 09:59:50 +02:00
ntb
NTB: perf: Fix race condition when run with ntb_test
2020-06-24 17:50:41 +02:00
nubus
nvdimm
nvme
nvme-multipath: do not fall back to __nvme_find_path() for non-optimized paths
2020-08-19 08:15:59 +02:00
nvmem
nvmem: qfprom: remove incorrect write support
2020-06-10 20:24:57 +02:00
of
of: of_mdio: Correct loop scanning logic
2020-07-22 09:32:55 +02:00
opp
oprofile
parisc
parisc: mask out enable and reserved bits from sba imask
2020-08-19 08:16:26 +02:00
parport
pci
PCI: qcom: Add support for tx term offset for rev 2.1.0
2020-08-21 13:05:20 +02:00
pcmcia
perf
drivers/perf: Prevent forced unbinding of PMU drivers
2020-07-29 10:18:40 +02:00
phy
phy: armada-38x: fix NETA lockup when repeatedly switching speeds
2020-08-19 08:16:14 +02:00
pinctrl
pinctrl: ingenic: Enhance support for IRQ_TYPE_EDGE_BOTH
2020-08-21 13:05:24 +02:00
platform
platform/x86: asus-nb-wmi: add support for ASUS ROG Zephyrus G14 and G15
2020-08-19 08:16:03 +02:00
pnp
power
power: supply: check if calc_soc succeeded in pm860x_init_battery
2020-08-19 08:16:16 +02:00
powercap
pps
ps3
ptp
pwm
pwm: jz4740: Fix build failure
2020-07-16 08:16:48 +02:00
rapidio
rapidio: fix an error in get_user_pages_fast() error handling
2020-05-27 17:46:48 +02:00
ras
regulator
regulator: fix memory leak on error path of regulator_register()
2020-08-19 08:15:57 +02:00
remoteproc
remoteproc: qcom_q6v5_mss: map/unmap mpss segments before/after use
2020-06-24 17:50:13 +02:00
reset
rpmsg
rtc
rtc: rv3028: Add missed check for devm_regmap_init_i2c()
2020-06-24 17:50:36 +02:00
s390
s390/dasd: fix inability to use DASD with DIAG driver
2020-08-19 08:16:29 +02:00
sbus
scsi
scsi: mesh: Fix panic after host or bus reset
2020-08-19 08:16:15 +02:00
sfi
sh
siox
slimbus
slimbus: core: Fix mismatch in of_node_get/put
2020-07-22 09:33:08 +02:00
soc
soc: qcom: rpmh-rsc: Set suppress_bind_attrs flag
2020-08-19 08:15:59 +02:00
soundwire
soundwire: intel: fix memory leak with devm_kasprintf
2020-07-22 09:33:00 +02:00
spi
spi: spidev: Align buffers for DMA
2020-08-19 08:16:25 +02:00
spmi
ssb
staging
staging: rtl8192u: fix a dubious looking mask before a shift
2020-08-19 08:16:13 +02:00
target
scsi: target: tcmu: Fix a use after free in tcmu_check_expired_queue_cmd()
2020-06-24 17:50:34 +02:00
tc
tee
thermal
thermal: ti-soc-thermal: Fix reversed condition in ti_thermal_expose_sensor()
2020-08-19 08:16:14 +02:00
thunderbolt
tty
vt: Reject zero-sized screen buffer size.
2020-07-29 10:18:43 +02:00
uio
uio_pdrv_genirq: fix use without device tree and no interrupt
2020-07-22 09:33:13 +02:00
usb
USB: serial: cp210x: enable usb generic throttle/unthrottle
2020-08-19 08:16:23 +02:00
vfio
vfio/mdev: Fix reference count leak in add_mdev_supported_type
2020-06-24 17:50:36 +02:00
vhost
vhost/scsi: fix up req type endian-ness
2020-08-05 09:59:42 +02:00
video
video: pxafb: Fix the function used to balance a 'dma_alloc_coherent()' call
2020-08-19 08:16:06 +02:00
virt
virt: vbox: Fix guest capabilities mask check
2020-07-22 09:33:11 +02:00
virtio
virtio_balloon: fix up endian-ness for free cmd id
2020-08-05 09:59:43 +02:00
visorbus
vlynq
vme
w1
w1: omap-hdq: cleanup to add missing newline for some dev_dbg
2020-06-22 09:31:26 +02:00
watchdog
watchdog: da9062: No need to ping manually before setting timeout
2020-06-24 17:50:32 +02:00
xen
xen/gntdev: Fix dmabuf import with non-zero sgt offset
2020-08-19 08:16:29 +02:00
zorro
Kconfig
Makefile