Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd/iommu_v2: Fix pasid_state 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 refcount_dec assumes that refcount will never reach 0: the current implementation causes the following to be invoked on pasid unbind: REFCOUNT_WARN(“decrement hit 0; leaking memory”)
Fix this issue by changing refcount_dec to refcount_dec_and_test to explicitly handle refcount=1.
Details
- Affected product:
- AlmaLinux 9.2 ESU , CentOS 8.4 ELS , CentOS 8.5 ELS , CentOS Stream 8 ELS , TuxCare 9.6 ESU
- Affected packages:
- kernel @ 4.18.0 (+4 more)
In the Linux kernel, the following vulnerability has been resolved:
iommu/amd/iommu_v2: Fix pasid_state 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 refcount_dec assumes that refcount will never reach 0: the current implementation causes the following to be invoked on pasid unbind: REFCOUNT_WARN(“decrement hit 0; leaking memory”)
Fix this issue by changing refcount_dec to refcount_dec_and_test to explicitly handle refcount=1.