HIGH Introduced in 6.10
ipu6 AuxDev DoubleFree
CVE-2026-93070
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI6.9MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: media: ipu6: Do not free aux device pdata after init ipu6_bus_initialize_device() stores the isys/psys pdata pointer in struct ipu6_bus_device and initializes the auxiliary device. After that point, error unwinding must drop the auxiliary device reference and let ipu6_bus_release() free both the bus device and adev->pdata. The isys and psys init paths already call put_device() when MMU initialization fails, and ipu6_bus_add_device() calls auxiliary_device_uninit() on auxiliary_device_add() failure. Both paths therefore run the bus release callback. The extra kfree(pdata) in the callers can release the same object a second time. Remove the manual pdata frees after the auxiliary device has been initialized. This issue was found by a static analysis checker and confirmed by manual source review.
02KernelScan AI Analysis
Risk summary
A double free exists in the Intel IPU6 image processing unit driver's device initialization error paths. If MMU initialization or auxiliary device registration fails, platform data is freed both by the bus release callback and by a manual kfree in the caller, corrupting the kernel heap. Systems with Intel IPU6 hardware are at risk; exploitation could lead to kernel code execution or denial of service.
Vulnerability analysis
When the Intel IPU6 driver sets up its internal auxiliary devices, it hands a block of setup data to an automatic cleanup mechanism, but then also frees the same block manually if a later hardware setup step fails. This leads to a double free because both the error path and the automatic cleanup try to release the same memory. The fix removes the redundant manual release so the cleanup mechanism alone handles the data. The flaw is only present on systems with Intel IPU6 hardware and is reached while the kernel is setting up the imaging device.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 6.10 | 6.12.110 | faa1eb97f0e6 |
| 6.18 | 6.10 | 6.18.52 | 5323ed5a7bb2 |
| mainline | 6.10 | 7.3-rc1 | 9be07216af4c |
| 7.2 | 6.10 | 7.2.6 | 7d102d1f0631 |
| cip/6.12 | 6.10 | 6.12.111-cip32 | faa1eb97f0e6 |