In the Linux kernel, the following vulnerability has been resolved: s390/vfio-ap: Fix missing lock required to access list of ap_matrix_mde
위협 신호 · CVSS · EPSS · KEV
이론적 심각도 점수
예측 데이터 없음
실측 악용 기록 없음
계획된 패치 주기 내 조치(60일 이내)
CVSS 벡터 · 메트릭
CVSS 벡터 정보 없음
상세 설명
In the Linux kernel, the following vulnerability has been resolved:
s390/vfio-ap: Fix missing lock required to access list of ap_matrix_mdev objects
In order to traverse or add/remove ap_matrix_mdev objects in the
matrix_dev->mdev_list, the matrix_dev->guests_lock mutex must be held.
There are two functions that access the list without holding the mutex:
vfio_ap_mdev_probe function
1The vfio_ap_mdev_probe function uses the matrix_dev->mdevs_lock 2mutex to guard the add of a newly created ap_matrix_mdev object to the 3matrix_dev->mdev_list. This mutex does not protect list access; its purpose 4is to guard against concurrent access to fields contained in an 5ap_matrix_mdev object. This could lead to kernel memory corruption or 6use-after-free if another mdev is created or removed concurrently. 7 8The adding of an ap_matrix_mdev object to matrix_dev->mdev_list 9is now guarded by the matrix_dev->guests_lock which is the correct10way to protect against concurrent mdev_list access.11 12Also removed the following two lines of code because the matrix_mdev is13allocated via vfio_alloc_device macro which uses kzalloc, so req_trigger14and cfg_chg_trigger are already zero-initialised when the struct is15allocated before the call to vfio_register_emulated_iommu_dev. This16prevents a window whereby these triggers are set to NULL after17the device is exposed to userspace.18 19matrix_mdev->req_trigger = NULL;20matrix_mdev->cfg_chg_trigger = NULL;21 22vfio_ap_mdev_for_queue functionThe status_show function that supports display of the status attribute of
the devices in /sys/bus/ap/devices calls the vfio_ap_mdev_for_queue
function which iterates the matrix_dev->mdev_list to find the object
representing the queue device whose status is to be displayed. In order to
traverse this list, the matrix_dev->guests_lock mutex must be held.
To fix this, the guests_lock mutex is taken prior to taking the
matrix_dev->mdevs_lock mutex in the status_show function. It is taken
there rather than the vfio_ap_mdev_for_queue function - where it is
needed - because it must be taken prior to the mdevs_lock mutex in order to
adhere to the proper locking order and prevent a lockdep splat; also
because the mdevs_lock is needed there to access fields within
the matrix_mdev object in that function.
See the vfio-ap-locking.rst in the linux kernel tree.
AI 심층 분석
공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.