🇰🇷 한글 설명
Linux 커널의 PowerNV PCI 핫플러그(pnv_php) 코드에서 서프라이즈 플러그 감지와 복구가 올바르게 동작하지 않던 문제를 수정합니다. 장치 제거 후 PHB/PE가 frozen 상태로 남아 재스캔이 불가능했고, 인터럽트 정지로 인해 재부팅이 필요했습니다. 핫플러그 이벤트 시 unfreeze 및 rescan을 수행하고, pci_bus_to_OF_node()가 NULL을 반환해도 커널 오ops가 발생하지 않도록 수정했습니다.
💡 쉬운 설명
서버에서 PCI 장치를 뺐다가 다시 꽂거나 새 장치를 연결해도 시스템이 인식하지 못해 재부팅해야 하는 문제가 있었습니다. 이 수정으로 장치 교체 후에도 재부팅 없이 정상적으로 인식됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
PCI: pnv_php: Fix surprise plug detection and recovery
The existing PowerNV hotplug code did not handle surprise plug events
correctly, leading to a complete failure of the hotplug system after device
removal and a required reboot to detect new devices.
This comes down to two issues:
1) When a device is surprise removed, often the bridge upstream
port will cause a PE freeze on the PHB. If this freeze is not
cleared, the MSI interrupts from the bridge hotplug notification
logic will not be received by the kernel, stalling all plug events
on all slots associated with the PE.
2) When a device is removed from a slot, regardless of surprise or
programmatic removal, the associated PHB/PE ls left frozen.
If this freeze is not cleared via a fundamental reset, skiboot
is unable to clear the freeze and cannot retrain / rescan the
slot. This also requires a reboot to clear the freeze and redetect
the device in the slot.
Issue the appropriate unfreeze and rescan commands on hotplug events,
and don't oops on hotplug if pci_bus_to_OF_node() returns NULL.
[bhelgaas: tidy comments]
📍 영향받는 시스템
IBM POWER(PowerNV) 기반 서버에서 동작하는 PowerNV PCI 핫플러그를 사용하는 Linux 커널 (패치 이전 버전)
⚔️ 공격 벡터
로컬 물리적 접근 또는 권한 있는 사용자가 PCI 장치를 제거·재연결할 때 핫플러그 기능이 정지되는 서비스 거부(가용성) 문제로, 원격 공격 경로는 확인되지 않음
🛡️ 대응 방법
배포판 벤더가 제공하는 CVE-2025-38623 수정이 포함된 최신 커널 패키지로 업데이트 후 재부팅
🔧 검증 코드
출력된 커널 버전이 벤더 패치 목록에서 CVE-2025-38623 수정이 포함된 버전인지 확인하며, PowerNV 플랫폼이 아니면 이 취약점의 영향을 받지 않습니다.
uname -r && (grep -i powernv /proc/cpuinfo | head -1; ls /sys/bus/pci/slots/ 2>/dev/null | head -5)