In the Linux kernel, the following vulnerability has been resolved:
iommu/amd/iommuv2: Fix pasidstate refcount dec hit 0 warning on pasid unbind
When unbinding pasid - a race condition exists vs outstanding page faults.
To prevent this, the pasid_state object contains a refcount. * set to 1 on pasid bind * incremented on each ppr notification start * decremented on each ppr notification done * decremented on pasid unbind
Since refcountdec assumes that refcount will never reach 0: the current implementation causes the following to be invoked on pasid unbind: REFCOUNTWARN("decrement hit 0; leaking memory")
Fix this issue by changing refcountdec to refcountdecandtest to explicitly handle refcount=1.
[
{
"id": "CVE-2023-53501-91f9d7c9",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@98d86bf32187db27946ca817c2467a5f2f7aa02f",
"signature_version": "v1",
"digest": {
"length": 157.0,
"function_hash": "27549943489426976684960040244367961144"
},
"target": {
"function": "put_pasid_state_wait",
"file": "drivers/iommu/amd/iommu_v2.c"
},
"signature_type": "Function",
"deprecated": false
},
{
"id": "CVE-2023-53501-f6e5122b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@98d86bf32187db27946ca817c2467a5f2f7aa02f",
"signature_version": "v1",
"digest": {
"line_hashes": [
"202903671457099793163618007315205797383",
"138818796410511711022102277580474346071",
"151314674619640767253672328481311338542",
"157773198344314086882562294808461803406",
"309671446595942992889277934794014641588"
],
"threshold": 0.9
},
"target": {
"file": "drivers/iommu/amd/iommu_v2.c"
},
"signature_type": "Line",
"deprecated": false
}
]