linux-uconsole/drivers
Sherry Yang b0cb2d8164 android: binder: no outgoing transaction when thread todo has transaction
[ Upstream commit 44b73962cb ]

When a process dies, failed reply is sent to the sender of any transaction
queued on a dead thread's todo list. The sender asserts that the
received failed reply corresponds to the head of the transaction stack.
This assert can fail if the dead thread is allowed to send outgoing
transactions when there is already a transaction on its todo list,
because this new transaction can end up on the transaction stack of the
original sender. The following steps illustrate how this assertion can
fail.

1. Thread1 sends txn19 to Thread2
   (T1->transaction_stack=txn19, T2->todo+=txn19)
2. Without processing todo list, Thread2 sends txn20 to Thread1
   (T1->todo+=txn20, T2->transaction_stack=txn20)
3. T1 processes txn20 on its todo list
   (T1->transaction_stack=txn20->txn19, T1->todo=<empty>)
4. T2 dies, T2->todo cleanup attempts to send failed reply for txn19, but
   T1->transaction_stack points to txn20 -- assertion failes

Step 2. is the incorrect behavior. When there is a transaction on a
thread's todo list, this thread should not be able to send any outgoing
synchronous transactions. Only the head of the todo list needs to be
checked because only threads that are waiting for proc work can directly
receive work from another thread, and no work is allowed to be queued
on such a thread without waking up the thread. This patch also enforces
that a thread is not waiting for proc work when a work is directly
enqueued to its todo list.

Acked-by: Arve Hjønnevåg <arve@android.com>
Signed-off-by: Sherry Yang <sherryy@android.com>
Reviewed-by: Martijn Coenen <maco@android.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-11-20 18:46:42 +01:00
..
accessibility
acpi ACPI: CPPC: Set pcc_data[pcc_ss_id] to NULL in acpi_cppc_processor_exit() 2019-10-29 09:19:52 +01:00
amba
android android: binder: no outgoing transaction when thread todo has transaction 2019-11-20 18:46:42 +01:00
ata ata: Disable AHCI ALPM feature for Ampere Computing eMAG SATA 2019-11-20 18:46:06 +01:00
atm Kconfig: Fix the reference to the IDT77105 Phy driver in the description of ATM_NICSTAR_USE_IDT77105 2019-09-21 07:16:57 +02:00
auxdisplay auxdisplay: panel: need to delete scan_timer when misc_register fails in panel_attach 2019-09-06 10:21:56 +02:00
base x86/bugs: Add ITLB_MULTIHIT bug infrastructure 2019-11-12 19:21:36 +01:00
bcma
block nbd: handle racing with error'ed out commands 2019-11-10 11:27:35 +01:00
bluetooth Bluetooth: btrtl: Additional Realtek 8822CE Bluetooth devices 2019-10-01 08:26:12 +02:00
bus bus: ti-sysc: Simplify cleanup upon failures in sysc_probe() 2019-09-21 07:16:51 +02:00
cdrom
char ipmi_si: Only schedule continuously in the thread in maintenance mode 2019-10-07 18:56:39 +02:00
clk clk: sunxi-ng: h6: fix PWM gate/reset offset 2019-11-20 18:45:21 +01:00
clocksource clocksource/drivers/exynos_mct: Increase priority over ARM arch timer 2019-07-26 09:14:12 +02:00
connector
cpufreq cpufreq: Avoid cpufreq_suspend() deadlock on system shutdown 2019-10-29 09:20:08 +01:00
cpuidle
crypto net: use skb_queue_empty_lockless() in busy poll contexts 2019-11-10 11:27:49 +01:00
dax mm/huge_memory: fix vmf_insert_pfn_{pmd, pud}() crash, handle unaligned addresses 2019-05-22 07:37:40 +02:00
dca
devfreq PM / devfreq: tegra: Fix kHz to Hz conversion 2019-10-11 18:20:46 +02:00
dio
dma dmaengine: at_xdmac: remove a stray bottom half unlock 2019-11-20 18:46:20 +01:00
dma-buf dma-buf/sw_sync: Synchronize signal vs syncpt free 2019-10-07 18:57:04 +02:00
edac EDAC, sb_edac: Return early on ADDRV bit and address type test 2019-11-20 18:46:17 +01:00
eisa
extcon extcon: cht-wc: Return from default case to avoid warnings 2019-11-20 18:45:26 +01:00
firewire
firmware firmware: arm_scmi: use strlcpy to ensure NULL-terminated strings 2019-11-20 18:46:14 +01:00
fmc
fpga fpga: altera-ps-spi: Fix getting of optional confd gpio 2019-09-21 07:16:53 +02:00
fsi fsi: scom: Don't abort operations for minor errors 2019-09-06 10:22:19 +02:00
gnss
gpio gpio: max77620: Use correct unit for debounce times 2019-11-06 13:05:50 +01:00
gpu qxl: fix null-pointer crash during suspend 2019-11-20 18:45:56 +01:00
hid HID: intel-ish-hid: fix wrong error handling in ishtp_cl_alloc_tx_ring() 2019-11-12 19:20:54 +01:00
hsi
hv Drivers: hv: vmbus: Fix synic per-cpu context initialization 2019-11-20 18:46:31 +01:00
hwmon hwmon: (acpi_power_meter) Change log level for 'unsafe software power cap' 2019-10-05 13:09:54 +02:00
hwspinlock
hwtracing intel_th: pci: Add Jasper Lake PCH support 2019-11-12 19:20:42 +01:00
i2c i2c: mediatek: Use DMA safe buffers for i2c transactions 2019-11-20 18:46:01 +01:00
ide
idle x86/cpu: Sanitize FAM6_ATOM naming 2019-05-14 19:17:53 +02:00
iio iio: dac: mcp4922: fix error handling in mcp4922_write_raw 2019-11-20 18:45:21 +01:00
infiniband IB/hfi1: Missing return value in error path for user sdma 2019-11-20 18:46:21 +01:00
input Input: synaptics-rmi4 - destroy F54 poller workqueue when removing 2019-11-20 18:45:16 +01:00
iommu iommu/amd: Apply the same IVRS IOAPIC workaround to Acer Aspire A315-41 2019-11-12 19:21:14 +01:00
ipack
irqchip irqchip/gic-v3-its: Use the exact ITSList for VMOVP 2019-11-10 11:27:31 +01:00
isdn net: use skb_queue_empty_lockless() in poll() handlers 2019-11-10 11:27:48 +01:00
leds led: triggers: Fix a memory leak bug 2019-10-05 13:09:45 +02:00
lightnvm lightnvm: pblk: fix freeing of merged pages 2019-07-26 09:14:09 +02:00
macintosh
mailbox mbox: qcom: add APCS child device for QCS404 2019-10-07 18:57:02 +02:00
mcb
md bcache: fix input overflow to writeback_rate_minimum 2019-11-06 13:05:20 +01:00
media media: fix: media: pci: meye: validate offset to avoid arbitrary access 2019-11-20 18:46:33 +01:00
memory memory: tegra: Fix integer overflow on tick value calculation 2019-05-25 18:23:32 +02:00
memstick memstick: jmb38x_ms: Fix an error handling path in 'jmb38x_ms_probe()' 2019-10-29 09:20:07 +01:00
message
mfd mfd: intel-lpss: Remove D3cold delay 2019-10-07 18:57:08 +02:00
misc mei: avoid FW version request on Ibex Peak and earlier 2019-10-17 13:45:10 -07:00
mmc mmc: sdhci-of-at91: fix quirk2 overwrite 2019-11-20 18:45:20 +01:00
mtd mtd: rawnand: qcom: don't include dma-direct.h 2019-11-20 18:45:55 +01:00
mux
net net: bcmgenet: Fix speed selection for reverse MII 2019-11-20 18:46:33 +01:00
nfc NFC: st21nfca: fix double free 2019-11-12 19:20:30 +01:00
ntb ntb: point to right memory window index 2019-10-11 18:21:18 +02:00
nubus
nvdimm libnvdimm/region: Initialize bad block for volatile namespaces 2019-10-11 18:21:20 +02:00
nvme nvme-multipath: fix possible io hang after ctrl reconnect 2019-11-12 19:21:11 +01:00
nvmem nvmem: core: return error code instead of NULL from nvmem_device_get 2019-11-20 18:46:31 +01:00
of of: make PowerMac cache node search conditional on CONFIG_PPC_PMAC 2019-11-20 18:46:06 +01:00
opp
oprofile
parisc parisc: Disable HP HSC-PCI Cards to prevent kernel crash 2019-10-05 13:10:04 +02:00
parport parport: Fix mem leak in parport_register_dev_model 2019-06-25 11:35:55 +08:00
pci PCI: tegra: Enable Relaxed Ordering only for Tegra20 & Tegra30 2019-11-12 19:20:52 +01:00
pcmcia
perf drivers/perf: arm_pmu: Fix failure path in PM notifier 2019-08-06 19:06:55 +02:00
phy phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current 2019-09-21 07:16:42 +02:00
pinctrl pinctrl: at91: don't use the same irqchip with multiple gpiochips 2019-11-20 18:46:41 +01:00
platform platform/x86: pmc_atom: Add Siemens SIMATIC IPC227E to critclk_systems DMI table 2019-11-10 11:27:55 +01:00
pnp
power power: supply: max14656: fix potential use-after-free 2019-11-06 13:05:39 +01:00
powercap x86/cpu: Sanitize FAM6_ATOM naming 2019-05-14 19:17:53 +02:00
pps drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl 2019-08-04 09:30:56 +02:00
ps3
ptp
pwm pwm: stm32-lp: Add check in case requested period cannot be achieved 2019-10-11 18:21:17 +02:00
rapidio drivers/rapidio/devices/rio_mport_cdev.c: NUL terminate some strings 2019-08-06 19:06:52 +02:00
ras RAS/CEC: Fix pfn insertion 2019-07-26 09:14:05 +02:00
regulator regulator: pfuze100-regulator: Variable "val" in pfuze100_regulator_probe() could be uninitialized 2019-11-10 11:27:15 +01:00
remoteproc remoteproc/davinci: Use %zx for formating size_t 2019-11-20 18:45:25 +01:00
reset reset: meson-audio-arb: Fix missing .owner setting of reset_controller_dev 2019-05-08 07:21:47 +02:00
rpmsg
rtc rtc: pl030: fix possible race condition 2019-11-20 18:46:18 +01:00
s390 scsi: zfcp: fix reaction on bit error threshold notification 2019-10-29 09:19:48 +01:00
sbus
scsi scsi: pm80xx: Fixed system hang issue during kexec boot 2019-11-20 18:46:30 +01:00
sfi
sh
siox
slimbus slimbus: fix a potential NULL pointer dereference in of_qcom_slim_ngd_register 2019-05-31 06:46:14 -07:00
sn
soc drivers: qcom: rpmh-rsc: clear wait_for_compl after use 2019-11-20 18:46:38 +01:00
soundwire soundwire: intel: Fix uninitialized adev deref 2019-11-20 18:45:22 +01:00
spi spi: spi-gpio: fix SPI_CS_HIGH capability 2019-09-16 08:22:07 +02:00
spmi
ssb ssb: Fix possible NULL pointer dereference in ssb_host_pcmcia_exit 2019-05-31 06:46:04 -07:00
staging staging: rtl8188eu: fix null dereference when kzalloc fails 2019-11-06 13:05:45 +01:00
target scsi: target: core: Do not overwrite CDB byte 1 2019-11-10 11:27:28 +01:00
tc
tee tee: optee: take DT status property into account 2019-11-20 18:45:20 +01:00
thermal thermal_hwmon: Sanitize thermal_zone type 2019-10-11 18:21:19 +02:00
thunderbolt thunderbolt: Use 32-bit writes when writing ring producer/consumer 2019-11-06 13:06:12 +01:00
tty 8250-men-mcb: fix error checking when get_num_ports returns -ENODEV 2019-11-10 11:27:25 +01:00
uio
usb usb: mtu3: disable vbus rise/fall interrupts of ltssm 2019-11-20 18:46:16 +01:00
uwb
vfio vfio_pci: Restore original state on release 2019-10-07 18:56:53 +02:00
vhost vhost: make sure log_num < in_num 2019-09-16 08:22:25 +02:00
video video: ssd1307fb: Start page range at page_offset 2019-10-07 18:56:30 +02:00
virt virt: vbox: fix memory leak in hgcm_call_preprocess_linaddr 2019-11-06 13:06:04 +01:00
virtio virtio_pci: fix a NULL pointer reference in vp_del_vqs 2019-05-10 17:54:08 +02:00
visorbus
vlynq
vme
w1 w1: fix the resume command API 2019-05-31 06:46:14 -07:00
watchdog watchdog: aspeed: Add support for AST2600 2019-10-11 18:21:15 +02:00
xen xen/pci: reserve MCFG areas earlier 2019-10-11 18:21:13 +02:00
zorro
Kconfig
Makefile