MEDIUM 5.5

CVE-2026-53305: Linux ps883x USB Type-C Retimer Kernel Oops on Device Unbind

A flaw in the Linux kernel's USB Type-C PS8833x retimer driver can cause the system to crash when a user unbinds the device from its driver—for example, when attempting to reassign it to a virtualization framework. The crash occurs because the driver's cleanup routine tries to access driver data that was never properly initialized during device startup. This is a memory corruption issue (null pointer dereference) that affects local users with sufficient privileges.

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
1 configuration(s)
Published / Modified
2026-06-26 / 2026-07-06

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: usb: typec: ps883x: Fix Oops at unbind When trying to unbind a device in order to bind to it vfio-platform as: echo bc0000.geniqup > /sys/bus/platform/devices/bc0000.geniqup/driver/unbind I get the following Oops: [ 436.478639] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000020 [ 436.487762] Mem abort info: [ 436.490716] ESR = 0x0000000096000004 [ 436.494595] EC = 0x25: DABT (current EL), IL = 32 bits [ 436.500071] SET = 0, FnV = 0 [ 436.503250] EA = 0, S1PTW = 0 [ 436.506505] FSC = 0x04: level 0 translation fault [ 436.511533] Data abort info: [ 436.514558] ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000 [ 436.520215] CM = 0, WnR = 0, TnD = 0, TagAccess = 0 [ 436.525436] GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0 [ 436.530918] user pgtable: 4k pages, 48-bit VAs, pgdp=00000008861a9000 [ 436.537554] [0000000000000020] pgd=0000000000000000, p4d=0000000000000000 [ 436.544548] Internal error: Oops: 0000000096000004 [#1] SMP [ 436.550374] Modules linked in: [ 436.553542] CPU: 2 UID: 0 PID: 671 Comm: bash Tainted: G W 7.0.0-rc3-g56fcdd0911a5-dirty #2 PREEMPT [ 436.564440] Tainted: [W]=WARN [ 436.567515] Hardware name: LENOVO 91B6CTO1WW/3796, BIOS O6NKT3BA 05/02/2025 [ 436.574675] pstate: 21400005 (nzCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) [ 436.581841] pc : ps883x_retimer_remove+0x14/0x94 [ 436.586605] lr : i2c_device_remove+0x28/0x84 [ 436.591017] sp : ffff8000847137c0 That's because the ps883x_retimer_remove() retrieves the driver data from i2c_get_clientdata() which was never set at probe. So, add i2c_set_clientdata() at the end of the probe.

3 reference(s) · View on NVD →

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

Technical summary

CVE-2026-53305 is a null pointer dereference vulnerability in the ps883x USB Type-C retimer driver within the Linux kernel. During probe, the driver fails to call i2c_set_clientdata() to associate the driver's private data structure with the i2c_client device. When the device is later unbound, ps883x_retimer_remove() invokes i2c_get_clientdata() expecting to retrieve this data pointer, but receives NULL instead. The subsequent dereference of this null pointer at offset 0x20 results in a kernel data abort exception (ESR 0x96000004), causing a fatal oops. The vulnerability manifests only during device unbind operations, making it reproducible through explicit driver unbind commands or when reassigning hardware to alternate kernel drivers.

Business impact

This vulnerability creates service availability risk for systems using PS8833x USB Type-C retimers—commonly found in enterprise laptops and workstations. An authenticated local user can trigger a kernel panic by unbinding the device, leading to unscheduled downtime and potential data loss if the crash occurs during critical workloads. Organizations that support device pass-through to virtual machines or frequently hot-swap USB Type-C hardware are at elevated risk. The crash is repeatable and deterministic, making it a reliable denial-of-service vector for privileged users or attackers who have gained local access.

Affected systems

Linux kernels with the ps883x USB Type-C retimer driver compiled and active. The vulnerability affects systems equipped with PS8833x retimer hardware. Version specificity requires verification against upstream kernel commit histories, but the flaw is present in versions where the driver exists without the i2c_set_clientdata() call. Arm-based systems (indicated by the aarch64 crash context in the CVE description) and x86 platforms running affected kernel versions are vulnerable.

Exploitability

Exploitation requires local code execution and privilege sufficient to unbind platform drivers—typically requiring root or CAP_SYS_ADMIN capabilities, though some distributions may expose this via unprivileged device management interfaces. No authentication bypass or privilege escalation is needed to trigger the crash once local access is obtained. The vulnerability is straightforward to exploit: a simple sysfs write command unbinding the device forces the oops. Remote exploitation is not possible. The barrier to successful exploitation is moderate due to the local privilege requirement, but the impact once triggered is certain and immediate.

Remediation

Apply a kernel update that includes the fix: the addition of i2c_set_clientdata(client, data) call at the end of the ps883x probe function. This ensures the driver data pointer is properly registered with the i2c subsystem, allowing the remove function to safely retrieve and use it. Verify the patched kernel version against your vendor's or the upstream Linux kernel security advisories. No workaround is available short of unloading the ps883x driver or avoiding unbind operations. Recompiling the kernel with the driver disabled is a temporary mitigation for non-critical systems.

Patch guidance

Apply the latest kernel security update from your distribution that resolves CVE-2026-53305. For upstream users, ensure your kernel includes the commit that adds i2c_set_clientdata() to ps883x_probe(). Verify the patch details against the upstream Linux kernel repository or your vendor's security advisory to confirm the exact version. After patching, reboot to activate the fixed kernel. If kernel live-patching is available for your environment, that may provide immediate remediation without reboot, but verify your live-patching framework supports this specific fix.

Detection guidance

Monitor kernel logs for NULL pointer dereference oops messages originating from ps883x_retimer_remove() or the i2c subsystem during device unbind operations. Systems with USB Type-C hardware and the ps883x driver loaded are candidates for scanning. Check running kernel version and module list: verify if ps883x is loaded via lsmod and confirm kernel version contains the fix. Operational detection is challenging without triggering the crash; proactive patching is more reliable than runtime detection. If suspicious unbind attempts are observed on systems with this hardware, isolate and patch immediately.

Why prioritize this

This is a straightforward kernel denial-of-service vulnerability affecting a real hardware driver used in enterprise laptops. Although exploitation requires local access and elevated privilege, the impact—kernel panic and service unavailability—is severe. The ease of reproduction and deterministic nature of the crash make this a practical risk for organizations supporting device assignment to virtual machines, hardware testing labs, or environments where users have local administrative access. The CVSS 5.5 MEDIUM severity reasonably reflects the privilege barrier, but business context may elevate priority in affected environments.

Risk score, explained

The CVSS 3.1 score of 5.5 (MEDIUM) reflects an attack vector limited to local systems (AV:L), no privilege escalation needed but requiring already-present low privileges (PR:L), no user interaction (UI:N), and an impact limited to availability (A:H). The scoring penalizes the vulnerability for its strict local requirement while crediting the certainty and severity of the denial-of-service impact. In environments where device unbinding is a routine operation or where elevated-privilege users are numerous, actual risk may be perceived as higher; conversely, in locked-down production systems, risk is lower.

Frequently asked questions

Can this vulnerability be exploited remotely?

No. CVE-2026-53305 requires local code execution on the affected system and sufficient privilege to unbind platform devices. Remote attackers cannot trigger this vulnerability.

Does this affect all Linux systems?

Only systems with the PS8833x USB Type-C retimer driver compiled and enabled in the kernel. Most typical servers and many desktop systems do not include this driver. Check your kernel configuration and loaded modules to determine applicability.

What happens if I unbind the device after patching?

After applying the fix, unbinding the device completes cleanly without triggering a kernel panic. The i2c_set_clientdata() addition allows the remove function to properly retrieve and release resources.

Can I disable the driver as a temporary workaround?

Yes. Blacklisting or unloading the ps883x module prevents the vulnerability from being triggered, but will disable USB Type-C retimer functionality. This is a temporary mitigation for systems where the hardware is not actively used.

This analysis is based on the CVE description, CVSS scoring, and technical details provided as of the publication date. Specific patch versions, affected kernel releases, and vendor-specific guidance should be verified against official Linux kernel security advisories and your distribution's security updates. Testing patches in non-production environments is strongly recommended before deployment. This document does not constitute a guarantee of security and should be considered one input among multiple risk management signals. Source: NVD (public-domain), retrieved 2026-08-05. Analysis generated by SEC.co (claude-haiku-4-5).