Import Source
https://github.com/microsoft/AzureLinuxVulnerabilityData/blob/main/osv/AZL-96525.json
JSON Data
https://api.osv.dev/v1/vulns/AZL-96525
Upstream
Published
2026-08-15T06:21:17Z
Modified
2026-08-29T05:27:27Z
Summary
CVE-2026-72073 affecting package kernel 6.6.150.1-1
Details

In the Linux kernel, the following vulnerability has been resolved:

mmc: vub300: fix use-after-free on probe failure

The vub300 driver lifetime-manages its controller state using vub300->kref, with vub300delete() freeing the mmc host when the last reference is dropped. The probe error path after the inactivity timer has been armed still bypasses that lifetime rule, however, and falls through to mmcfreehost() directly if mmcadd_host() fails.

The race window is between arming the inactivity timer and reaching the probe error unwind after mmcaddhost() fails:

    probe thread                     timer/workqueue
    ------------                     ---------------
    kref_init(&vub300->kref)         ref = 1
    kref_get(&vub300->kref)          ref = 2, timer ref
    add_timer(inactivity_timer)      fires after one second
    |
    |   race window
    |<---------------------------------------------------->
    |
    mmc_add_host(mmc)
                                     inactivity timer fires
                                     vub300_queue_dead_work()
                                       kref_get()          ref = 3
                                       queue_work(deadwork)
    mmc_add_host() fails
    timer_delete_sync()
    mmc_free_host(mmc)
      frees vub300
                                     deadwork runs
                                       use-after-free

The inactivity timeout is one second, so this would require mmcaddhost() to both fail and take more than one second to do so. This is unlikely to happen in practice, but the error path is still wrong.

timerdeletesync() only waits for the timer callback itself. It does not flush deadwork that the callback may already have queued. As a result, queued deadwork can still hold a kref while the probe error path directly frees the backing mmc host, including the vub300 storage.

Fix this by using the same lifetime mechanism as disconnect. Clear vub300->interface so that the timer callback and any queued deadwork return early and drop their references, then drop the initial probe reference and return without falling through to errfreehost.

References

Affected packages

Azure Linux:3 / kernel

Package

Name
kernel
Purl
pkg:rpm/azure-linux/kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Last affected
6.6.150.1-1

Database specific

source
"https://github.com/microsoft/AzureLinuxVulnerabilityData/blob/main/osv/AZL-96525.json"