linux-stable/drivers
Jia-Ju Bai 739abce96d gpio: gpio-grgpio: fix possible sleep-in-atomic-context bugs in grgpio_irq_map/unmap()
[ Upstream commit e36eaf94be ]

The driver may sleep while holding a spinlock.
The function call path (from bottom to top) in Linux 4.19 is:

drivers/gpio/gpio-grgpio.c, 261:
	request_irq in grgpio_irq_map
drivers/gpio/gpio-grgpio.c, 255:
	_raw_spin_lock_irqsave in grgpio_irq_map

drivers/gpio/gpio-grgpio.c, 318:
	free_irq in grgpio_irq_unmap
drivers/gpio/gpio-grgpio.c, 299:
	_raw_spin_lock_irqsave in grgpio_irq_unmap

request_irq() and free_irq() can sleep at runtime.

To fix these bugs, request_irq() and free_irq() are called without
holding the spinlock.

These bugs are found by a static analysis tool STCheck written by myself.

Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com>
Link: https://lore.kernel.org/r/20191218132605.10594-1-baijiaju1990@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-02-24 08:36:26 +01:00
..
accessibility
acpi ACPI: PM: s2idle: Prevent spurious SCIs from waking up the system 2020-02-19 19:52:57 +01:00
amba ARM updates for 5.4-rc: 2019-10-23 06:26:33 -04:00
android binder: fix log spam for existing debugfs file creation. 2020-02-01 09:34:35 +00:00
ata libata: Fix retrieving of active qcs 2020-01-09 10:19:59 +01:00
atm atm: eni: fix uninitialized variable warning 2020-02-01 09:34:46 +00:00
auxdisplay
base regmap: fix writes to non incrementing registers 2020-02-14 16:34:19 -05:00
bcma
block xen/blkfront: Adjust indentation in xlvbd_alloc_gendisk 2020-01-23 08:22:54 +01:00
bluetooth Bluetooth: btusb: Disable runtime suspend on Realtek devices 2020-02-11 04:35:09 -08:00
bus bus: moxtet: fix potential stack buffer overflow 2020-02-19 19:53:04 +01:00
cdrom cdrom: respect device capabilities during opening action 2020-01-04 19:18:25 +01:00
char drivers: ipmi: fix off-by-one bounds check that leads to a out-of-bounds write 2020-02-19 19:53:05 +01:00
clk clk: meson: meson8b: make the CCF use the glitch-free mali mux 2020-02-24 08:36:26 +01:00
clocksource clocksource: riscv: add notrace to riscv_sched_clock 2020-01-09 10:19:59 +01:00
connector
counter
cpufreq cpufreq: Avoid creating excessively large stack frames 2020-02-11 04:35:25 -08:00
cpuidle cpuidle: teo: Avoid using "early hits" incorrectly 2020-02-05 21:22:52 +00:00
crypto crypto: caam/qi2 - fix typo in algorithm's driver name 2020-02-14 16:34:18 -05:00
dax
dca
devfreq PM / devfreq: Add new name attribute for sysfs 2020-02-05 21:22:40 +00:00
dio
dma dmaengine: axi-dmac: add a check for devm_regmap_init_mmio 2020-02-14 16:34:19 -05:00
dma-buf dma-buf: Fix memory leak in sync_file_merge() 2019-12-21 11:04:48 +01:00
edac EDAC/mc: Fix use-after-free and memleaks during device removal 2020-02-19 19:53:03 +01:00
eisa
extcon extcon-intel-cht-wc: Don't reset USB data connection at probe 2020-02-01 09:34:46 +00:00
firewire net: add annotations on hh->hh_len lockless accesses 2020-01-09 10:20:06 +01:00
firmware firmware: arm_scmi: Fix doorbell ring logic for !CONFIG_64BIT 2020-01-26 10:01:07 +01:00
fpga
fsi fsi: core: Fix small accesses and unaligned offsets via sysfs 2019-12-31 16:45:09 +01:00
gnss
gpio gpio: gpio-grgpio: fix possible sleep-in-atomic-context bugs in grgpio_irq_map/unmap() 2020-02-24 08:36:26 +01:00
gpu drm/msm/adreno: fix zap vs no-zap handling 2020-02-24 08:36:25 +01:00
greybus
hid HID: steam: Fix input device disappearing 2020-02-01 09:34:46 +00:00
hsi
hv hv_balloon: Balloon up according to request page number 2020-02-11 04:35:21 -08:00
hwmon hwmon: (pmbus/ltc2978) Fix PMBus polling of MFR_COMMON definitions. 2020-02-19 19:53:07 +01:00
hwspinlock
hwtracing intel_th: msu: Fix window switching without windows 2019-12-31 16:46:09 +01:00
i2c i2c: stm32f7: report dma error during probe 2020-01-26 10:01:06 +01:00
i3c
ide
idle
iio iio: st_gyro: Correct data for LSM9DS0 gyro 2020-02-01 09:34:36 +00:00
infiniband RDMA/core: Fix protection fault in get_pkey_idx_qp_list 2020-02-19 19:53:06 +01:00
input Input: synaptics - remove the LEN0049 dmi id from topbuttonpad list 2020-02-19 19:52:55 +01:00
interconnect interconnect: qcom: qcs404: Walk the list safely on node removal 2019-12-17 19:55:39 +01:00
iommu iommu/arm-smmu-v3: Populate VMID field for CMDQ_OP_TLBI_NH_VA 2020-02-14 16:34:16 -05:00
ipack
irqchip irqchip: Place CONFIG_SIFIVE_PLIC into the menu 2020-01-23 08:22:55 +01:00
isdn net: use skb_queue_empty_lockless() in poll() handlers 2019-10-28 13:33:41 -07:00
leds leds: pca963x: Fix open-drain initialization 2020-02-24 08:36:24 +01:00
lightnvm
macintosh cpufreq: Use per-policy frequency QoS 2019-10-21 02:05:21 +02:00
mailbox mailbox: imx: Fix Tx doorbell shutdown path 2020-01-04 19:18:30 +01:00
mcb
md bcache: avoid unnecessary btree nodes flushing in btree_flush_write() 2020-02-14 16:34:19 -05:00
media media: sun4i-csi: Fix [HV]sync polarity handling 2020-02-24 08:36:25 +01:00
memory memory: mtk-smi: Add PM suspend and resume ops 2020-01-17 19:48:59 +01:00
memstick memstick: jmb38x_ms: Fix an error handling path in 'jmb38x_ms_probe()' 2019-10-09 11:08:03 +02:00
message scsi: mptfusion: Fix double fetch bug in ioctl 2020-01-23 08:22:35 +01:00
mfd mfd: max77650: Select REGMAP_IRQ in Kconfig 2020-02-14 16:34:19 -05:00
misc lkdtm/bugs: fix build error in lkdtm_UNSET_SMEP 2020-02-05 21:22:46 +00:00
mmc mmc: core: Rework wp-gpio handling 2020-02-19 19:53:10 +01:00
mtd mtd: sharpslpart: Fix unsigned comparison to zero 2020-02-14 16:34:18 -05:00
mux
net gianfar: Fix TX timestamping with a stacked DSA driver 2020-02-24 08:36:24 +01:00
nfc NFC: pn544: Adjust indentation in pn544_hci_check_presence 2020-02-11 04:35:45 -08:00
ntb
nubus
nvdimm libnvdimm/btt: fix variable 'rc' set but not used 2020-01-04 19:18:12 +01:00
nvme nvme: fix the parameter order for nvme_get_log in nvme_get_fw_slot_info 2020-02-19 19:53:05 +01:00
nvmem nvmem: core: fix memory abort in cleanup path 2020-02-11 04:35:21 -08:00
of of: Add OF_DMA_DEFAULT_COHERENT & select it on powerpc 2020-02-11 04:35:25 -08:00
opp opp: Reinitialize the list_kref before adding the static OPPs again 2019-10-23 10:58:44 +05:30
oprofile
parisc parisc: Remove 32-bit DMA enforcement from sba_iommu 2019-10-14 21:44:26 +02:00
parport parport: load lowlevel driver if ports not found 2019-12-31 16:45:25 +01:00
pci PCI: Fix pci_add_dma_alias() bitmask size 2020-02-24 08:36:24 +01:00
pcmcia
perf perf/imx_ddr: Add enhanced AXI ID filter support 2020-02-01 09:34:49 +00:00
phy phy: qualcomm: Adjust indentation in read_poll_timeout 2020-02-11 04:35:45 -08:00
pinctrl pinctrl: sh-pfc: sh7264: Fix CAN function GPIOs 2020-02-24 08:36:24 +01:00
platform platform/x86: intel_mid_powerbtn: Take a copy of ddata 2020-02-14 16:34:12 -05:00
pnp
power power: supply: ltc2941-battery-gauge: fix use-after-free 2020-02-11 04:35:24 -08:00
powercap powercap: intel_rapl: add NULL pointer check to rapl_mmio_cpu_online() 2020-01-14 20:08:18 +01:00
pps
ps3
ptp ptp: free ptp device pin descriptors properly 2020-01-23 08:22:51 +01:00
pwm pwm: sun4i: Fix incorrect calculation of duty_cycle/period 2020-01-26 10:01:04 +01:00
rapidio
ras
regulator regulator: core: Add regulator_is_equal() helper 2020-02-11 04:35:48 -08:00
remoteproc
reset reset: Fix {of,devm}_reset_control_array_get kerneldoc return types 2020-01-23 08:22:43 +01:00
rpmsg rpmsg: char: release allocated memory 2020-01-14 20:08:37 +01:00
rtc rtc: cmos: Stop using shared IRQ 2020-02-14 16:34:12 -05:00
s390 s390/pkey: fix missing length of protected key on return 2020-02-19 19:53:04 +01:00
sbus
scsi scsi: ufs: Fix ufshcd_probe_hba() reture value in case ufshcd_scsi_add_wlus() fails 2020-02-14 16:34:08 -05:00
sfi
sh
siox
slimbus
soc soc: qcom: rpmhpd: Set 'active_only' for active only power domains 2020-02-14 16:34:16 -05:00
soundwire soundwire: intel: fix PDI/stream mapping for Bulk 2019-12-31 16:45:11 +01:00
spi spi: pxa2xx: Add support for Intel Comet Lake-H 2020-02-01 09:34:48 +00:00
spmi spmi: pmic-arb: Set lockdep class for hierarchical irq domains 2020-02-19 19:53:07 +01:00
ssb
staging media: meson: add missing allocation failure check on new_buf 2020-02-24 08:36:23 +01:00
target scsi: RDMA/isert: Fix a recently introduced regression related to logout 2020-01-29 16:45:30 +01:00
tc
tee tee: optee: Fix compilation issue with nommu 2020-02-05 21:22:49 +00:00
thermal thermal: Fix deadlock in thermal thermal_zone_device_check 2019-12-13 08:43:21 +01:00
thunderbolt thunderbolt: Power cycle the router if NVM authentication fails 2019-12-04 22:30:50 +01:00
tty serial: imx: fix a race condition in receive path 2020-02-01 09:34:34 +00:00
uio
usb usb: gadget: f_ecm: Use atomic_t to track in-flight request 2020-02-11 04:35:10 -08:00
vfio vfio/pci: call irq_bypass_unregister_producer() before freeing irq 2019-12-21 11:04:48 +01:00
vhost vhost/vsock: accept only packets with the right dst_cid 2020-01-04 19:19:18 +01:00
video pxa168fb: Fix the function used to release some memory in an error handling path 2020-02-24 08:36:25 +01:00
virt virt: vbox: fix memory leak in hgcm_call_preprocess_linaddr 2019-10-10 14:50:32 +02:00
virtio virtio_balloon: Fix memory leaks on errors in virtballoon_probe() 2020-02-11 04:35:47 -08:00
visorbus
vlynq
vme
w1 w1: ds250x: Fix build error without CRC16 2019-10-10 15:35:41 +02:00
watchdog drivers: watchdog: stm32_iwdg: set WDOG_HW_RUNNING at probe 2020-02-14 16:34:18 -05:00
xen xen/balloon: Support xend-based toolstack take two 2020-02-11 04:35:36 -08:00
zorro
Kconfig
Makefile