MEDIUM 5.5

CVE-2026-53339: Linux i2c-qcom-cci NULL Pointer Dereference on Driver Removal

The Qualcomm CCI (Camera Control Interface) I2C controller driver in the Linux kernel has a bug that causes a crash when the driver is unloaded or the device is removed. The issue occurs because the driver attempts to wait for a completion signal from I2C masters that were never properly initialized. On systems where only one of the two available I2C masters is enabled, unloading the driver triggers a NULL pointer dereference, freezing or crashing the kernel. This is a local issue affecting systems with the vulnerable driver installed.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.5 MEDIUM · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Weaknesses (CWE)
CWE-476
Affected products
8 configuration(s)
Published / Modified
2026-07-01 / 2026-07-23

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: i2c: qcom-cci: Fix NULL pointer dereference in cci_remove() On all modern platforms Qualcomm CCI controller provides two I2C masters, and on particular boards only one I2C master may be initialized, and in such cases the device unbinding or driver removal causes a NULL pointer dereference, because cci_halt() is called for all two I2C masters, but a completion is initialized only for the single enabled master: % rmmod i2c-qcom-cci Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000 <snip> Call trace: __wait_for_common+0x194/0x1a8 (P) wait_for_completion_timeout+0x20/0x2c cci_remove+0xc4/0x138 [i2c_qcom_cci] platform_remove+0x20/0x30 device_remove+0x4c/0x80 device_release_driver_internal+0x1c8/0x224 driver_detach+0x50/0x98 bus_remove_driver+0x6c/0xbc driver_unregister+0x30/0x60 platform_driver_unregister+0x14/0x20 qcom_cci_driver_exit+0x18/0x1008 [i2c_qcom_cci] ....

8 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

CVE-2026-53339 is a NULL pointer dereference in the cci_remove() function of the i2c-qcom-cci Linux kernel driver. The vulnerability stems from incomplete initialization handling: the driver iterates through two I2C masters during removal, calling cci_halt() on each, but completion objects are only initialized for enabled masters. When cci_halt() attempts to wait_for_completion_timeout() on an uninitialized completion structure, a NULL pointer dereference occurs. The flaw is exposed during module unload (rmmod) or platform device removal. CWE-476 (Null Pointer Dereference) is the underlying weakness.

Business impact

Affected systems experience kernel crashes or hangs during driver shutdown scenarios, including module unload, device hot-removal, or system reboot sequences. For production environments relying on Qualcomm camera hardware on ARM64 platforms, this can disrupt device functionality and complicate maintenance windows. While not a data breach or privilege escalation vector, the denial-of-service impact may degrade availability of devices dependent on the CCI controller.

Affected systems

The Linux kernel's i2c-qcom-cci driver is affected. This driver manages the Qualcomm Camera Control Interface I2C subsystem, found primarily in ARM64 systems using Qualcomm SoCs with camera control hardware. Affected systems typically include mobile devices, embedded systems, and specialized hardware using modern Qualcomm platforms that initialize the CCI controller. Check your kernel configuration for CONFIG_I2C_QCOM_CCI to determine if your system includes this driver.

Exploitability

Exploitation requires local access and the ability to unload kernel modules or trigger device removal. No remote exploitation path exists. The vulnerability is triggered passively during normal administrative operations (driver unload, device unbind) rather than through crafted input or active exploitation. A local user with permissions to unload modules could trivially trigger the crash, making the barrier to triggering the defect very low once system access is obtained.

Remediation

Update the Linux kernel to a patched version that includes the fix to cci_remove(). The fix ensures that completion structures are only waited on if they were initialized during probe, preventing the NULL pointer dereference. Verify the specific patch or kernel version from your vendor's advisory. Alternatively, if CCI controller support is not required, disable CONFIG_I2C_QCOM_CCI at kernel build time.

Patch guidance

Consult your Linux distribution or Qualcomm platform vendor for patched kernel versions. The upstream Linux kernel fix addresses the initialization logic to track which I2C masters are enabled and avoids calling wait_for_completion_timeout() on uninitialized completions. Patch releases will vary by distribution (Ubuntu, Fedora, RHEL, Android, etc.); verify against your vendor's security advisory. Test the patched kernel in a non-production environment before wide deployment to ensure camera hardware continues functioning correctly.

Detection guidance

Monitor kernel logs for NULL pointer dereference messages at address 0x0 occurring in wait_for_completion_timeout() or within the i2c_qcom_cci module stack trace. Automated log analysis tools can flag stack traces mentioning 'cci_remove' paired with memory access violations. Additionally, track module unload events and correlate with system crashes or reboots. Userspace tools like systemd-journal or auditd can capture device-remove events preceding the failure.

Why prioritize this

Although the CVSS score is 5.5 (MEDIUM), this should be prioritized for devices where the CCI controller is essential for operation and frequent driver reloading occurs, or where systems require reliable shutdown behavior. Non-critical systems can defer patching, but production deployments using Qualcomm camera hardware should plan timely updates. The vulnerability is easy to trigger but does not enable privilege escalation or data theft, limiting its severity compared to remote or elevation-of-privilege flaws.

Risk score, explained

The CVSS v3.1 score of 5.5 reflects: Local Attack Vector (AV:L) – requires system access; Low Attack Complexity (AC:L) – standard driver operations trigger it; Low Privileges (PR:L) – ordinary user can unload modules; No User Interaction (UI:N); Confidentiality and Integrity unaffected (C:N, I:N); Availability High impact (A:H) – kernel crash. The score appropriately categorizes a local denial-of-service condition without security boundary violations.

Frequently asked questions

Does this vulnerability allow remote code execution or privilege escalation?

No. CVE-2026-53339 is purely a local denial-of-service condition. An attacker must have local access to unload the driver or trigger device removal. It does not enable remote code execution, privilege escalation, or authentication bypass.

Which systems are most at risk?

Qualcomm-based ARM64 devices running the Linux kernel with the i2c-qcom-cci driver enabled are at risk. This includes certain smartphones, tablets, IoT devices, and embedded systems. Check if your distribution's kernel configuration includes CONFIG_I2C_QCOM_CCI=y to confirm exposure.

What happens if I don't patch immediately?

If the CCI driver is not frequently unloaded, the vulnerability may not manifest. However, system reboots, device hot-removal, or administrative driver reloads will trigger a kernel crash. For production systems where uptime is critical, patching should be prioritized; non-critical systems can batch updates with scheduled maintenance.

Can I work around this without patching the kernel?

A temporary mitigation is to disable the CCI driver if your application does not require Qualcomm camera hardware. Rebuild the kernel with CONFIG_I2C_QCOM_CCI=n. Otherwise, patching the kernel is the proper fix. Do not rely on avoiding driver unload as a permanent solution in production environments.

This analysis is provided for informational purposes. CVSS scores, affected versions, and patch details are derived from official CVE and vendor sources. Always verify vulnerability details and patch availability through your vendor's official security advisory before deploying patches. Test in non-production environments first. SEC.co makes no warranty regarding the completeness or accuracy of this analysis and assumes no liability for damages resulting from its use or misuse. Source: NVD (public-domain), retrieved 2026-08-10. Analysis generated by SEC.co (claude-haiku-4-5).