CVE-2026-64447 is a double-free in the Intel IPU (Image Processing Unit) staging driver affecting the ipu7_mmu_init() and ipu7_bus_add_device() error paths. The bug occurs because both paths call kfree(pdata) after already calling put_device(), not recognizing that put_device() triggers ipu7_bus_release() — which takes ownership of and frees pdata. This is the classic auxiliary_device ownership transfer problem: upon successful return from auxiliary_device_init(), the installed release function owns the data, but error paths must NOT free it independently.

There's a second bug layered on top: dev_err_probe() is called after the device is freed, creating a use-after-free where the diagnostic infrastructure dereferences memory that has already been deallocated.

The fix requires two changes. First, save the return value (ret) before calling put_device() or auxiliary_device_uninit(). Second, remove the redundant kfree(pdata) from both error paths — the release function handles it. This isn't defensive programming; it's double-free creation.

If you're auditing similar code, look for any driver that calls put_device() or auxiliary_device_uninit() in an error handler after having previously allocated pdata. The auxiliary_device API transfers ownership to the release function on successful initialization — error paths must not free data that has already been handed off. This pattern likely exists in other staging media drivers consuming the auxiliary_device API; the error paths are precisely the code paths least likely to receive thorough testing.