KernelScan.io

HIGH

gpio IrqBusSyncUnlock Race

CVE-2026-74733

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.5MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: gpio: pca953x: fix pca953x_irq_bus_sync_unlock regmap lock Locking is disabled in the regmap config as this driver uses its own lock. This means that all calls to regmap functions (read or write) must hold the i2c_lock. The function pca953x_irq_bus_sync_unlock() did not do this, and it was therefore possible that multiple threads could cause an incorrect register to be read/written. A previous patch partly fixed this, but only protected the write to the interrupt mask register, and not the read from the direction register.

02

Engine v0.6.0

Risk summary

A race condition in the PCA953x I2C GPIO expander driver allows concurrent threads to interleave I2C register operations without proper locking, causing reads and writes to target incorrect hardware registers. This can corrupt GPIO direction, output, and interrupt-mask configuration on the affected expander chip. The vulnerability requires local access to a system equipped with PCA953x-series hardware and is exploitable by any local user who can trigger GPIO interrupt setup operations.

Affecteddrivers/gpio/gpio-pca953x.c (gpio subsystem)

Vulnerability analysis

The PCA953x I2C GPIO expander driver disables regmap's internal locking and relies on a driver-level I2C bus lock to serialize all register access. The interrupt bus synchronization function acquired this lock only for a subset of its operations—specifically the interrupt mask write—leaving the direction register read unprotected. When two threads concurrently accessed the I2C bus, auto-increment addressing could interleave their transactions, causing data to be written to or read from the wrong register. The fix moves lock acquisition to the beginning of the synchronization function so it covers every regmap call, and splits the direction-input helper into locked and unlocked variants so the already-held lock is reused rather than re-acquired. The vulnerable path is reachable locally by any user who can trigger GPIO interrupt configuration on a system with a PCA953x-series I2C GPIO expander; no network access or special hardware interaction is needed beyond the presence of the chip.

03

BranchIntroducedFixed inPatch commit
6.16.1.1016.241255e64eb9d
6.12—6.12.114e6a2f5f845f5
6.18—6.18.579dc325327bab
6.66.6.426.6.1605d05c4252c09
6.96.9.116.10bf3f37c2d40b
7.1—7.1.9—
mainline—7.2—

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Affected — no CIP fix yet (latest 6.12.112-cip33)
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)