1
0
Fork 0
remarkable-linux/drivers
Dexuan Cui b5199c61e9 PCI: hv: Disable/enable IRQs rather than BH in hv_compose_msi_msg()
commit 35a88a18d7 upstream.

Commit de0aa7b2f9 ("PCI: hv: Fix 2 hang issues in hv_compose_msi_msg()")
uses local_bh_disable()/enable(), because hv_pci_onchannelcallback() can
also run in tasklet context as the channel event callback, so bottom halves
should be disabled to prevent a race condition.

With CONFIG_PROVE_LOCKING=y in the recent mainline, or old kernels that
don't have commit f71b74bca6 ("irq/softirqs: Use lockdep to assert IRQs
are disabled/enabled"), when the upper layer IRQ code calls
hv_compose_msi_msg() with local IRQs disabled, we'll see a warning at the
beginning of __local_bh_enable_ip():

  IRQs not enabled as expected
    WARNING: CPU: 0 PID: 408 at kernel/softirq.c:162 __local_bh_enable_ip

The warning exposes an issue in de0aa7b2f97d: local_bh_enable() can
potentially call do_softirq(), which is not supposed to run when local IRQs
are disabled. Let's fix this by using local_irq_save()/restore() instead.

Note: hv_pci_onchannelcallback() is not a hot path because it's only called
when the PCI device is hot added and removed, which is infrequent.

Fixes: de0aa7b2f9 ("PCI: hv: Fix 2 hang issues in hv_compose_msi_msg()")
Signed-off-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Cc: stable@vger.kernel.org
Cc: Stephen Hemminger <sthemmin@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-07-22 14:28:48 +02:00
..
accessibility
acpi acpi: Add helper for deactivating memory region 2018-07-08 15:30:46 +02:00
amba ARM: amba: Don't read past the end of sysfs "driver_override" buffer 2018-05-01 12:58:21 -07:00
android ANDROID: binder: prevent transactions into own process. 2018-05-01 12:58:20 -07:00
ata ahci: Disable LPM on Lenovo 50 series laptops with a too old BIOS 2018-07-17 11:39:25 +02:00
atm atm: zatm: Fix potential Spectre v1 2018-07-22 14:28:43 +02:00
auxdisplay auxdisplay: fix broken menu 2018-07-03 11:24:56 +02:00
base PM / OPP: Update voltage in case freq == old_freq 2018-07-03 11:24:47 +02:00
bcma
block loop: remember whether sysfs_create_group() was done 2018-07-17 11:39:33 +02:00
bluetooth Bluetooth: hci_qca: Avoid missing rampatch failure with userspace fw loader 2018-07-03 11:24:49 +02:00
bus sunxi-rsb: Include OF based modalias in device uevent 2018-01-10 09:31:19 +01:00
cdrom cdrom: do not call check_disk_change() inside cdrom_open() 2018-05-30 07:52:34 +02:00
char tpm: fix race condition in tpm_common_write() 2018-07-03 11:24:53 +02:00
clk clk: at91: PLL recalc_rate() now using cached MUL and DIV values 2018-07-03 11:24:59 +02:00
clocksource clocksource/drivers/imx-tpm: Correct some registers operation flow 2018-06-21 04:02:40 +09:00
connector
cpufreq cpufreq / CPPC: Set platform specific transition_delay_us 2018-07-22 14:28:42 +02:00
cpuidle cpuidle: powernv: Fix promotion from snooze if next state disabled 2018-07-03 11:24:51 +02:00
crypto crypto: crypto4xx - fix crypto4xx_build_pdr, crypto4xx_build_sdr leak 2018-07-22 14:28:43 +02:00
dax dax: check for QUEUE_FLAG_DAX in bdev_dax_supported() 2018-07-11 16:29:22 +02:00
dca
devfreq PM / devfreq: Fix potential NULL pointer dereference in governor_store 2018-04-12 12:32:13 +02:00
dio
dma dmaengine: qcom: bam_dma: get num-channels and num-ees from dt 2018-05-30 07:52:37 +02:00
dma-buf dma-buf: remove redundant initialization of sg_table 2018-06-05 11:41:57 +02:00
edac x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type 2018-04-19 08:56:20 +02:00
eisa
extcon extcon: intel-cht-wc: Set direction and drv flags for V5 boost GPIO 2018-04-24 09:36:29 +02:00
firewire firewire-ohci: work around oversized DMA reads on JMicron controllers 2018-04-26 11:02:03 +02:00
firmware efi/libstub/arm64: Handle randomized TEXT_OFFSET 2018-06-21 04:03:01 +09:00
fmc
fpga fpga-manager: altera-ps-spi: preserve nCONFIG state 2018-05-01 12:58:24 -07:00
fsi
gpio gpio: No NULL owner 2018-06-16 09:45:14 +02:00
gpu drm/udl: fix display corruption of the last line 2018-07-11 16:29:16 +02:00
hid HID: debug: check length before copy_to_user() 2018-07-11 16:29:20 +02:00
hsi
hv Drivers: hv: vmbus: do not mark HV_PCIE as perf_device 2018-04-19 08:56:16 +02:00
hwmon hwmon: (pmbus/adm1275) Accept negative page register values 2018-05-30 07:52:34 +02:00
hwspinlock
hwtracing intel_th: Use correct device when freeing buffers 2018-06-05 11:41:59 +02:00
i2c i2c: tegra: Fix NACK error handling 2018-07-17 11:39:30 +02:00
ide cdrom: do not call check_disk_change() inside cdrom_open() 2018-05-30 07:52:34 +02:00
idle
iio iio: sca3000: Fix an error handling path in 'sca3000_probe()' 2018-07-03 11:24:57 +02:00
infiniband RDMA/ucm: Mark UCM interface as BROKEN 2018-07-17 11:39:33 +02:00
input Input: elantech - fix V4 report decoding for module with middle key 2018-07-03 11:25:04 +02:00
iommu iommu/vt-d: fix shift-out-of-bounds in bug checking 2018-06-21 04:02:53 +09:00
ipack
irqchip irqchip/gic-v3-its: Don't bind LPI to unavailable NUMA node 2018-07-03 11:24:56 +02:00
isdn isdn: eicon: fix a missing-check bug 2018-06-11 22:49:19 +02:00
leds leds: pm8058: Silence pointer to integer size warning 2018-03-19 08:42:50 +01:00
lightnvm lightnvm: pblk: protect line bitmap while submitting meta io 2017-12-20 10:10:38 +01:00
macintosh drivers: macintosh: rack-meter: really fix bogus memsets 2018-05-30 07:52:27 +02:00
mailbox mailbox: mailbox-test: don't rely on rx_buffer content to signal data ready 2017-12-14 09:53:12 +01:00
mcb
md dm: prevent DAX mounts if not supported 2018-07-11 16:29:23 +02:00
media media: rc: oops in ir_timer_keyup after device unplug 2018-07-22 14:28:48 +02:00
memory
memstick
message scsi: mptfusion: Add bounds check in mptctl_hp_targetinfo() 2018-05-25 16:17:47 +02:00
mfd mfd: intel-lpss: Fix Intel Cannon Lake LPSS I2C input clock 2018-07-03 11:25:00 +02:00
misc vmw_balloon: fix inflation with batching 2018-07-17 11:39:25 +02:00
mmc mmc: dw_mmc: fix card threshold control configuration 2018-07-17 11:39:23 +02:00
mtd mtd: rawnand: denali_dt: set clk_x_rate to 200 MHz unconditionally 2018-07-22 14:28:48 +02:00
mux mux: core: fix double get_device() 2018-01-17 09:45:27 +01:00
net net: lan78xx: Fix race in tx pending skb size calculation 2018-07-22 14:28:48 +02:00
nfc NFC: pn533: don't send USB data off of the stack 2018-06-16 09:45:15 +02:00
ntb ntb_transport: Fix bug with max_mw_size parameter 2018-04-26 11:02:13 +02:00
nubus
nvdimm linvdimm, pmem: Preserve read-only setting for pmem devices 2018-07-03 11:24:58 +02:00
nvme nvme-pci: Remap CMB SQ entries on every controller reset 2018-07-17 11:39:31 +02:00
nvmem
of of: platform: stop accessing invalid dev in of_platform_device_destroy 2018-07-03 11:24:52 +02:00
oprofile
parisc parisc/pci: Switch LBA PCI bus from Hard Fail to Soft Fail mode 2018-05-30 07:52:28 +02:00
parport parport_pc: Add support for WCH CH382L PCI-E single parallel port card. 2018-04-08 14:26:31 +02:00
pci PCI: hv: Disable/enable IRQs rather than BH in hv_compose_msi_msg() 2018-07-22 14:28:48 +02:00
pcmcia PCMCIA / PM: Avoid noirq suspend aborts during suspend-to-idle 2018-05-30 07:52:39 +02:00
perf
phy phy: qcom-qusb2: Fix crash if nvmem cell not specified 2018-06-16 09:45:16 +02:00
pinctrl pinctrl: devicetree: Fix pctldev pointer overwrite 2018-07-03 11:24:56 +02:00
platform platform/x86: asus-wmi: Fix NULL pointer dereference 2018-07-08 15:30:53 +02:00
pnp
power power: supply: ltc2941-battery-gauge: Fix temperature units 2018-05-30 07:52:38 +02:00
powercap
pps
ps3
ptp
pwm pwm: lpss: platform: Save/restore the ctrl register over a suspend/resume 2018-07-03 11:25:03 +02:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: fix resource leak in error handling path in 'rio_dma_transfer()' 2017-12-14 09:53:08 +01:00
ras
regulator regulator: of: Add a missing 'of_node_put()' in an error handling path of 'of_regulator_match()' 2018-05-30 07:52:41 +02:00
remoteproc remoteproc: qcom: Fix potential device node leaks 2018-06-21 04:02:48 +09:00
reset
rpmsg rpmsg: smd: do not use mananged resources for endpoints and channels 2018-07-03 11:24:59 +02:00
rtc rtc: sun6i: Fix bit_idx value for clk_register_gate 2018-07-03 11:24:59 +02:00
s390 s390/dasd: use blk_mq_rq_from_pdu for per request data 2018-07-08 15:30:51 +02:00
sbus
scsi scsi: megaraid_sas: fix selection of reply queue 2018-07-17 11:39:28 +02:00
sfi
sh
sn
soc soc: rockchip: power-domain: Fix wrong value when power up pd with writemask 2018-07-03 11:24:51 +02:00
spi spi: bcm2835aux: ensure interrupts are enabled for shared handler 2018-06-21 04:02:54 +09:00
spmi
ssb
staging staging: r8822be: Fix RTL8822be can't find any wireless AP 2018-07-17 11:39:24 +02:00
target scsi: target: Fix truncated PR-in ReadKeys response 2018-07-11 16:29:14 +02:00
tc
tee tee: check shm references are consistent in offset/size 2018-06-21 04:02:54 +09:00
thermal thermal: bcm2835: Stop using printk format %pCr 2018-07-03 11:24:48 +02:00
thunderbolt thunderbolt: Prevent crash when ICM firmware is not running 2018-04-24 09:36:29 +02:00
tty vt: prevent leaking uninitialized data to userspace via /dev/vcs* 2018-07-08 15:30:47 +02:00
uio uio_hv_generic: check that host supports monitor page 2018-04-12 12:32:19 +02:00
usb xhci: Fix USB3 NULL pointer dereference at logical disconnect. 2018-07-22 14:28:48 +02:00
uwb
vfio vfio: Use get_user_pages_longterm correctly 2018-07-11 16:29:15 +02:00
vhost vhost_net: validate sock before trying to put its fd 2018-07-22 14:28:47 +02:00
video video: uvesafb: Fix integer overflow in allocation 2018-07-03 11:25:02 +02:00
virt
virtio virtio_ring: fix num_free handling in error case 2018-03-15 10:54:32 +01:00
vlynq
vme
w1 1wire: family module autoload fails because of upper/lower case mismatch. 2018-07-03 11:24:47 +02:00
watchdog watchdog: asm9260_wdt: fix error handling in asm9260_wdt_probe() 2018-05-30 07:52:36 +02:00
xen xen: Remove unnecessary BUG_ON from __unbind_from_irq() 2018-07-03 11:25:03 +02:00
zorro zorro: Set up z->dev.dma_mask for the DMA API 2018-05-30 07:52:30 +02:00
Kconfig
Makefile usb: build drivers/usb/common/ when USB_SUPPORT is set 2018-02-25 11:07:53 +01:00