1
0
Fork 0
alistair23-linux/drivers
Zhihao Cheng da3bb6fa23 ubi: check kthread_should_stop() after the setting of task state
commit d005f8c658 upstream.

A detach hung is possible when a race occurs between the detach process
and the ubi background thread. The following sequences outline the race:

  ubi thread: if (list_empty(&ubi->works)...

  ubi detach: set_bit(KTHREAD_SHOULD_STOP, &kthread->flags)
              => by kthread_stop()
              wake_up_process()
              => ubi thread is still running, so 0 is returned

  ubi thread: set_current_state(TASK_INTERRUPTIBLE)
              schedule()
              => ubi thread will never be scheduled again

  ubi detach: wait_for_completion()
              => hung task!

To fix that, we need to check kthread_should_stop() after we set the
task state, so the ubi thread will either see the stop bit and exit or
the task state is reset to runnable such that it isn't scheduled out
indefinitely.

Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
Cc: <stable@vger.kernel.org>
Fixes: 801c135ce7 ("UBI: Unsorted Block Images")
Reported-by: syzbot+853639d0cb16c31c7a14@syzkaller.appspotmail.com
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-11-05 11:43:33 +01:00
..
accessibility
acpi ACPI: EC: PM: Drop ec_no_wakeup check from acpi_ec_dispatch_gpe() 2020-11-05 11:43:25 +01:00
amba
android binder: Remove bogus warning on failed same-process transaction 2020-10-29 09:57:37 +01:00
ata ata: sata_nv: Fix retrieving of active qcs 2020-11-05 11:43:12 +01:00
atm atm: eni: fix the missed pci_disable_device() for eni_init_one() 2020-10-01 13:18:17 +02:00
auxdisplay
base PM: runtime: Remove link state checks in rpm_get/put_supplier() 2020-11-05 11:43:26 +01:00
bcma
block nbd: make the config put is called before the notifying the waiter 2020-11-05 11:43:22 +01:00
bluetooth Bluetooth: btusb: Fix memleak in btusb_mtk_submit_wmt_recv_urb 2020-10-29 09:58:08 +01:00
bus bus/fsl_mc: Do not rely on caller to provide non NULL mc_io 2020-11-05 11:43:19 +01:00
cdrom
char ipmi_si: Fix wrong return value in try_smi_init() 2020-10-29 09:57:44 +01:00
clk clk: ti: clockdomain: fix static checker warning 2020-11-05 11:43:20 +01:00
clocksource clocksource/drivers/timer-gx6605s: Fixup counter reload 2020-10-07 08:01:25 +02:00
connector
counter counter: 104-quad-8: Add lock guards - generic interface 2020-05-02 08:48:44 +02:00
cpufreq acpi-cpufreq: Honor _PSD table setting on new AMD CPUs 2020-11-05 11:43:25 +01:00
cpuidle cpuidle: Fixup IRQ state 2020-09-09 19:12:21 +02:00
crypto chelsio/chtls: fix tls record info to user 2020-11-01 12:01:03 +01:00
dax dax: Fix alloc_dax_region() compile warning 2020-10-01 13:17:15 +02:00
dca
devfreq PM / devfreq: tegra30: Fix integer overflow on CPU's freq max out 2020-10-01 13:17:14 +02:00
dio
dma dmaengine: dma-jz4780: Fix race in jz4780_dma_tx_status 2020-11-05 11:43:29 +01:00
dma-buf dmabuf: fix NULL pointer dereference in dma_buf_release() 2020-10-01 13:18:24 +02:00
edac EDAC/ti: Fix handling of platform_get_irq() error 2020-10-29 09:57:29 +01:00
eisa
extcon extcon: ptn5150: Fix usage of atomic GPIO with sleeping GPIO chips 2020-11-05 11:43:24 +01:00
firewire
firmware firmware: arm_scmi: Add missing Rx size re-initialisation 2020-11-05 11:43:12 +01: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: aspeed: fix ast2600 bank properties 2020-10-07 08:01:29 +02:00
gpu drm/i915: Force VT'd workarounds when running as a guest OS 2020-11-05 11:43:29 +01:00
greybus
hid HID: wacom: Avoid entering wacom_wac_pen_report for pad / battery 2020-11-05 11:43:29 +01:00
hsi
hv Drivers: hv: vmbus: Add timeout to vmbus_wait_for_unload 2020-09-23 12:40:40 +02:00
hwmon hwmon: (pmbus/max34440) Fix status register reads for MAX344{51,60,61} 2020-10-29 09:57:32 +01:00
hwspinlock
hwtracing coresight: Make sysfs functional on topologies with per core sink 2020-11-05 11:43:18 +01:00
i2c i2c: core: Restore acpi_walk_dep_device_list() getting called after registering the ACPI i2c devs 2020-10-29 09:58:00 +01:00
i3c i3c: master: Fix error return in cdns_i3c_master_probe() 2020-10-29 09:57:51 +01:00
ide
idle
iio iio:gyro:itg3200: Fix timestamp alignment and prevent data leak. 2020-11-05 11:43:30 +01:00
infiniband RDMA/qedr: Fix memory leak in iWARP CM 2020-11-05 11:43:12 +01:00
input Input: sun4i-ps2 - fix handling of platform_get_irq() error 2020-10-29 09:57:57 +01:00
interconnect
iommu iommu/vt-d: Fix lockdep splat in iommu_flush_dev_iotlb() 2020-10-14 10:33:02 +02:00
ipack ipack: tpci200: fix error return code in tpci200_register() 2020-05-27 17:46:47 +02:00
irqchip irqchip/stm32-exti: Avoid losing interrupts due to clearing pending bits by mistake 2020-09-03 11:27:06 +02:00
isdn
leds leds: bcm6328, bcm6358: use devres LED registering function 2020-11-05 11:43:24 +01:00
lightnvm lightnvm: fix out-of-bounds write to array devices->info[] 2020-10-29 09:58:00 +01:00
macintosh macintosh/via-macii: Access autopoll_devs when inside lock 2020-08-19 08:16:15 +02:00
mailbox mailbox: avoid timer start from callback 2020-10-29 09:57:53 +01:00
mcb
md md/raid5: fix oops during stripe resizing 2020-11-05 11:43:22 +01:00
media media: uvcvideo: Fix uvc_ctrl_fixup_xu_info() not having any effect 2020-11-05 11:43:24 +01:00
memory memory: emif: Remove bogus debugfs error handling 2020-11-05 11:43:21 +01:00
memstick memstick: Skip allocating card when removing host 2020-10-07 08:01:25 +02:00
message scsi: mptfusion: Fix null pointer dereferences in mptscsih_remove() 2020-11-05 11:43:25 +01:00
mfd mfd: sm501: Fix leaks in probe() 2020-10-29 09:57:43 +01:00
misc misc: rtsx: do not setting OC_POWER_DOWN reg in rtsx_pci_init_ocp() 2020-11-01 12:01:06 +01:00
mmc mmc: sdhci-acpi: AMDI0040: Set SDHCI_QUIRK2_PRESET_VALUE_BROKEN 2020-11-05 11:43:23 +01:00
mtd ubi: check kthread_should_stop() after the setting of task state 2020-11-05 11:43:33 +01:00
mux
net bnxt_en: Log unknown link speed appropriately. 2020-11-05 11:43:20 +01:00
nfc NFC: st95hf: Fix memleak in st95hf_in_send_cmd 2020-09-17 13:47:45 +02:00
ntb NTB: hw: amd: fix an issue about leak system resources 2020-10-29 09:58:00 +01:00
nubus
nvdimm libnvdimm/security: ensure sysfs poll thread woke up and fetch updated attr 2020-08-21 13:05:35 +02:00
nvme nvme-rdma: fix crash when connect rejected 2020-11-05 11:43:22 +01:00
nvmem nvmem: core: fix possibly memleak when use nvmem_cell_info_to_nvmem_cell() 2020-10-29 09:57:42 +01:00
of of: of_mdio: Correct loop scanning logic 2020-07-22 09:32:55 +02:00
opp opp: Prevent memory leak in dev_pm_opp_attach_genpd() 2020-10-29 09:58:06 +01:00
oprofile
parisc parisc: mask out enable and reserved bits from sba imask 2020-08-19 08:16:26 +02:00
parport
pci PCI/ACPI: Whitelist hotplug ports for D3 if power managed by ACPI 2020-11-05 11:43:25 +01:00
pcmcia
perf drivers/perf: thunderx2_pmu: Fix memory resource error handling 2020-10-29 09:57:30 +01:00
phy phy: marvell: comphy: Convert internal SMCC firmware return codes to errno 2020-11-01 12:01:07 +01:00
pinctrl pinctrl: mcp23s08: Fix mcp23x17 precious range 2020-10-29 09:57:39 +01:00
platform platform/x86: mlx-platform: Remove PSU EEPROM configuration 2020-10-29 09:57:44 +01:00
pnp
power power: supply: test_power: add missing newlines when printing parameters by sysfs 2020-11-05 11:43:19 +01:00
powercap
pps
ps3
ptp
pwm pwm: img: Fix null pointer access in probe 2020-10-29 09:57:54 +01:00
rapidio rapidio: fix the missed put_device() for rio_mport_add_riodev 2020-10-29 09:57:53 +01:00
ras
regulator regulator: resolve supply after creating regulator 2020-10-29 09:57:34 +01:00
remoteproc remoteproc: qcom_q6v5_mss: Validate modem blob firmware size before load 2020-08-21 13:05:29 +02:00
reset
rpmsg rpmsg: glink: Use complete_all for open states 2020-11-05 11:43:20 +01:00
rtc rtc: ds1374: fix possible race condition 2020-10-01 13:17:43 +02:00
s390 s390/qeth: don't let HW override the configured port role 2020-10-29 09:58:10 +01:00
sbus
scsi scsi: qla2xxx: Fix crash on session cleanup with unload 2020-11-05 11:43:26 +01:00
sfi
sh
siox
slimbus slimbus: qcom-ngd-ctrl: disable ngd in qmi server down callback 2020-10-29 09:57:42 +01:00
soc soc: fsl: qbman: Fix return value on success 2020-10-29 09:57:59 +01:00
soundwire soundwire: bus: disable pm_runtime in sdw_slave_delete 2020-10-01 13:17:36 +02:00
spi spi: sprd: Release DMA channel also on probe deferral 2020-11-05 11:43:23 +01:00
spmi
ssb
staging net: wilc1000: clean up resource in error path of init mon interface 2020-10-29 09:57:40 +01:00
target scsi: target: tcmu: Fix warning: 'page' may be used uninitialized 2020-10-29 09:57:44 +01:00
tc
tee
thermal thermal: rcar_thermal: Handle probe error gracefully 2020-10-01 13:17:44 +02:00
thunderbolt
tty vt: keyboard, extend func_buf_lock to readers 2020-11-05 11:43:29 +01:00
uio uio: free uio id after uio file node is freed 2020-11-05 11:43:18 +01:00
usb usb: host: fsl-mph-dr-of: check return of dma_set_mask() 2020-11-05 11:43:29 +01:00
vfio vfio iommu type1: Fix memory leak in vfio_iommu_type1_pin_pages 2020-10-29 09:57:56 +01:00
vhost vhost: Use vhost_get_used_size() in vhost_vring_set_addr() 2020-10-14 10:32:58 +02:00
video video: fbdev: pvr2fb: initialize variables 2020-11-05 11:43:15 +01:00
virt drivers/virt/fsl_hypervisor: Fix error handling path 2020-10-29 09:57:38 +01:00
virtio virtio_ring: Avoid loop when vq is broken in virtqueue_poll 2020-08-26 10:40:57 +02:00
visorbus
vlynq
vme
w1 w1: mxc_w1: Fix timeout resolution problem leading to bus error 2020-11-05 11:43:25 +01:00
watchdog drivers: watchdog: rdc321x_wdt: Fix race condition bugs 2020-11-05 11:43:20 +01:00
xen xen/events: block rogue events for some time 2020-11-05 11:43:12 +01:00
zorro
Kconfig
Makefile