android_kernel_motorola_sm6375/drivers
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gui-Dong Han 85f6a6590d usb: mon: Fix atomicity violation in mon_bin_vma_fault
commit 2dd23cc4d0e6aa55cf9fb3b05f2f4165b01de81c upstream.

In mon_bin_vma_fault():
    offset = vmf->pgoff << PAGE_SHIFT;
    if (offset >= rp->b_size)
        return VM_FAULT_SIGBUS;
    chunk_idx = offset / CHUNK_SIZE;
    pageptr = rp->b_vec[chunk_idx].pg;
The code is executed without holding any lock.

In mon_bin_vma_close():
    spin_lock_irqsave(&rp->b_lock, flags);
    rp->mmap_active--;
    spin_unlock_irqrestore(&rp->b_lock, flags);

In mon_bin_ioctl():
    spin_lock_irqsave(&rp->b_lock, flags);
    if (rp->mmap_active) {
        ...
    } else {
        ...
        kfree(rp->b_vec);
        rp->b_vec  = vec;
        rp->b_size = size;
        ...
    }
    spin_unlock_irqrestore(&rp->b_lock, flags);

Concurrent execution of mon_bin_vma_fault() with mon_bin_vma_close() and
mon_bin_ioctl() could lead to atomicity violations. mon_bin_vma_fault()
accesses rp->b_size and rp->b_vec without locking, risking array
out-of-bounds access or use-after-free bugs due to possible modifications
in mon_bin_ioctl().

This possible bug is found by an experimental static analysis tool
developed by our team, BassCheck[1]. This tool analyzes the locking APIs
to extract function pairs that can be concurrently executed, and then
analyzes the instructions in the paired functions to identify possible
concurrency bugs including data races and atomicity violations. The above
possible bug is reported when our tool analyzes the source code of
Linux 6.2.

To address this issue, it is proposed to add a spin lock pair in
mon_bin_vma_fault() to ensure atomicity. With this patch applied, our tool
never reports the possible bug, with the kernel configuration allyesconfig
for x86_64. Due to the lack of associated hardware, we cannot test the
patch in runtime testing, and just verify it according to the code logic.

[1] https://sites.google.com/view/basscheck/

Fixes: 19e6317d24c2 ("usb: mon: Fix a deadlock in usbmon between ...")
Cc:  <stable@vger.kernel.org>
Signed-off-by: Gui-Dong Han <2045gemini@gmail.com>
Link: https://lore.kernel.org/r/20240105052412.9377-1-2045gemini@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-01-25 14:34:30 -08:00
..
accessibility
acpi ACPI: LPIT: Avoid u32 multiplication overflow 2024-01-25 14:34:22 -08:00
amba amba: bus: fix refcount leak 2023-09-23 10:59:52 +02:00
android binder: fix unused alloc->free_async_space 2024-01-25 14:34:29 -08:00
ata ata: pata_isapnp: Add missing error check for devm_ioport_map() 2023-12-08 08:44:23 +01:00
atm atm: solos-pci: Fix potential deadlock on &tx_queue_lock 2023-12-20 15:41:15 +01:00
auxdisplay
base devcoredump: Send uevent once devcd is ready 2023-12-13 18:18:18 +01:00
bcma
block remove the sx8 block driver 2023-11-08 11:23:42 +01:00
bluetooth Bluetooth: btmtkuart: fix recv_buf() return value 2024-01-25 14:34:26 -08:00
bus bus: ti-sysc: Fix SYSC_QUIRK_SWSUP_SIDLE_ACT handling for uart wake-up 2023-10-10 21:46:39 +02:00
cdrom
char hwrng: geode - fix accessing registers 2023-11-20 10:30:12 +01:00
clk clk: si5341: fix an error code problem in si5341_output_clk_set_rate 2024-01-25 14:34:28 -08:00
clocksource clocksource/drivers/timer-atmel-tcb: Fix initialization on SAM9 hardware 2023-11-28 16:50:13 +00:00
connector
counter
cpufreq cpufreq: imx6q: Don't disable 792 Mhz OPP unnecessarily 2023-12-08 08:44:28 +01:00
cpuidle
crypto crypto: sahara - do not resize req->src when doing hash operations 2024-01-25 14:34:24 -08:00
dax
dca
devfreq PM / devfreq: Fix leak in devfreq_dev_release() 2023-09-23 10:59:54 +02:00
dio
dma dmaengine: stm32-mdma: correct desc prep when channel running 2023-11-28 16:50:19 +00:00
dma-buf dma-buf/sw_sync: Avoid recursive lock during fence signal 2023-08-30 16:27:28 +02:00
edac EDAC/thunderx: Fix possible out-of-bounds string access 2024-01-25 14:34:21 -08:00
eisa
extcon extcon: Fix kernel doc of property capability fields to avoid warnings 2023-07-27 08:37:20 +02:00
firewire firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards 2024-01-15 18:25:27 +01:00
firmware firmware: ti_sci: Fix an off-by-one in ti_sci_debugfs_create() 2024-01-25 14:34:25 -08:00
fpga
fsi fsi: master-ast-cf: Add MODULE_FIRMWARE macro 2023-09-23 10:59:37 +02:00
gnss
gpio gpiolib: sysfs: Fix error handling on failed export 2023-12-13 18:18:15 +01:00
gpu gpu/drm/radeon: fix two memleaks in radeon_vm_init 2024-01-25 14:34:28 -08:00
greybus
hid HID: hid-asus: add const to read-only outgoing usb buffer 2023-12-20 15:41:23 +01:00
hsi
hv Drivers: hv: vmbus: Fix vmbus_wait_for_unload() to scan present CPUs 2023-06-28 10:18:36 +02:00
hwmon hwmon: (acpi_power_meter) Fix 4.29 MW bug 2023-12-13 18:18:13 +01:00
hwspinlock
hwtracing coresight: etm4x: Fix width of CCITMIN field 2024-01-25 14:34:21 -08:00
i2c i2c: core: Fix atomic xfer check for non-preempt config 2024-01-15 18:25:27 +01:00
i3c i3c: master: cdns: Fix reading status register 2023-11-28 16:50:19 +00:00
ide treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
idle
iio iio: adc: ti_am335x_adc: Fix return value check of tiadc_request_dma() 2024-01-08 11:29:46 +01:00
infiniband RDMA/usnic: Silence uninitialized symbol smatch warnings 2024-01-25 14:34:26 -08:00
input Input: atkbd - use ab83 as id when skipping the getid command 2024-01-25 14:34:29 -08:00
interconnect interconnect: Treat xlate() returning NULL node as an error 2024-01-08 11:29:45 +01:00
iommu of/iommu: Make of_map_rid() PCI agnostic 2023-12-13 18:18:11 +01:00
ipack
irqchip firmware: ti_sci: Replace HTTP links with HTTPS ones 2023-11-20 10:30:12 +01:00
isdn mISDN: Update parameter type of dsp_cmx_send() 2023-08-16 18:19:23 +02:00
leds leds: trigger: ledtrig-cpu:: Fix 'output may be truncated' issue for 'cpu' 2023-11-20 10:30:13 +01:00
lightnvm
macintosh
mailbox mailbox: ti-msgmgr: Fill non-message tx data fields with 0x0 2023-07-27 08:37:23 +02:00
mcb mcb: fix error handling for different scenarios when parsing 2023-11-28 16:50:19 +00:00
md bcache: avoid NULL checking to c->root in run_cache_set() 2023-12-20 15:41:20 +01:00
media media: dvbdev: drop refcount on error path in dvb_device_open() 2024-01-25 14:34:28 -08:00
memory memory: brcmstb_dpfe: fix testing array offset after use 2023-07-27 08:37:14 +02:00
memstick memstick r592: make memstick_debug_get_tpc_name() static 2023-07-27 08:37:10 +02:00
message
mfd mfd: dln2: Fix double put in dln2_probe 2023-11-20 10:30:13 +01:00
misc misc: st_core: Do not call kfree_skb() under spin_lock_irqsave() 2023-11-20 10:30:13 +01:00
mmc mmc: sdhci_omap: Fix TI SoC dependencies 2024-01-25 14:34:28 -08:00
mtd mtd: Fix gluebi NULL pointer dereference caused by ftl notifier 2024-01-25 14:34:23 -08:00
mux
net xen-netback: don't produce zero-size SKB frags 2024-01-25 14:34:29 -08:00
nfc nfcsim.c: Fix error checking for debugfs_create_dir 2023-06-28 10:18:41 +02:00
ntb ntb: Fix calculation ntb_transport_tx_free_entry() 2023-09-23 10:59:55 +02:00
nubus
nvdimm nd_btt: Make BTT lanes preemptible 2023-11-20 10:30:12 +01:00
nvme nvme: introduce helper function to get ctrl state 2024-01-25 14:34:19 -08:00
nvmem nvmem: imx: correct nregs for i.MX6UL 2023-11-08 11:23:37 +01:00
of of: unittest: Fix of_count_phandle_with_args() expected value message 2024-01-25 14:34:29 -08:00
opp OPP: Fix passing 0 to PTR_ERR in _opp_attach_genpd() 2023-09-23 10:59:40 +02:00
oprofile
parisc parisc: iosapic.c: Fix sparse warnings 2023-10-10 21:46:39 +02:00
parport parport: parport_serial: Add Brainboxes device IDs and geometry 2024-01-25 14:34:21 -08:00
pci PCI: Disable ATS for specific Intel IPU E2000 devices 2024-01-15 18:25:29 +01:00
pcmcia pcmcia: ds: fix possible name leak in error path in pcmcia_device_add() 2023-11-20 10:30:14 +01:00
perf perf/smmuv3: Enable HiSilicon Erratum 162001900 quirk for HIP08/09 2023-09-23 11:00:03 +02:00
phy phy: mapphone-mdm6600: Fix pinctrl_pm handling for sleep pins 2023-10-25 11:53:25 +02:00
pinctrl pinctrl: lochnagar: Don't build on MIPS 2024-01-25 14:34:19 -08:00
platform platform/x86: intel_telemetry: Fix kernel doc descriptions 2023-12-20 15:41:21 +01:00
pnp
power power: supply: Fix logic checking if system is running from battery 2023-06-21 15:44:09 +02:00
powercap powercap: RAPL: Fix CONFIG_IOSF_MBI dependency 2023-07-27 08:37:06 +02:00
pps
ps3
ptp ptp: annotate data-race around q->head and q->tail 2023-11-28 16:50:16 +00:00
pwm pwm: brcmstb: Utilize appropriate clock APIs in suspend/resume 2023-11-20 10:30:15 +01:00
rapidio
ras
regulator regulator/core: Revert "fix kobject release warning and memory leak in regulator_register()" 2023-10-25 11:53:23 +02:00
remoteproc
reset reset: hisilicon: hi6220: fix Wvoid-pointer-to-enum-cast warning 2024-01-25 14:34:20 -08:00
rpmsg rpmsg: Fix possible refcount leak in rpmsg_register_device_override() 2023-11-08 11:23:40 +01:00
rtc rtc: pcf85363: fix wrong mask/val parameters in regmap_update_bits call 2023-11-20 10:30:14 +01:00
s390 s390/scm: fix virtual vs physical address confusion 2024-01-25 14:34:20 -08:00
sbus
scsi scsi: hisi_sas: Replace with standard error code return value 2024-01-25 14:34:25 -08:00
sfi
sh
siox
slimbus
soc soc: qcom: llcc: Handle a second device without data corruption 2023-11-20 10:30:12 +01:00
soundwire soundwire: stream: fix NULL pointer dereference for multi_link 2023-12-20 15:41:24 +01:00
spi spi: sh-msiof: Enforce fixed DTDL for R-Car H3 2024-01-25 14:34:23 -08:00
spmi
ssb treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
staging staging: rtl8712: fix race condition 2023-09-23 10:59:37 +02:00
target scsi: target: core: Fix deadlock due to recursive locking 2023-10-10 21:46:43 +02:00
tc
tee
thermal thermal: core: prevent potential string overflow 2023-11-20 10:30:09 +01:00
thunderbolt
tty serial: 8250_omap: Add earlycon support for the AM654 UART controller 2023-12-13 18:18:16 +01:00
uio uio: Fix use-after-free in uio_open 2024-01-25 14:34:21 -08:00
usb usb: mon: Fix atomicity violation in mon_bin_vma_fault 2024-01-25 14:34:30 -08:00
vfio
vhost treewide: Remove uninitialized_var() usage 2023-06-09 10:29:01 +02:00
video fbdev: stifb: Make the STI next font pointer a 32-bit signed offset 2023-12-08 08:44:27 +01:00
virt
virtio virtio-mmio: fix memory leak of vm_dev 2023-11-08 11:23:34 +01:00
visorbus
vlynq
vme
w1 w1: fix loop in w1_fini() 2023-07-27 08:37:19 +02:00
watchdog watchdog: bcm2835_wdt: Fix WDIOC_SETTIMEOUT handling 2024-01-25 14:34:28 -08:00
xen xen/events: fix delayed eoi list handling 2023-11-28 16:50:16 +00:00
zorro
Kconfig
Makefile