CVE-2026-63880 in Linux
Riassunto
di VulDB • 19/07/2026
Nel kernel Linux, è stata risolta la seguente vulnerabilità:
drm/amdgpu: correzione della perdita di lock su ENOMEM in AMDGPU_GEM_OP_GET_MAPPING_INFO
Il ramo `AMDGPU_GEM_OP_GET_MAPPING_INFO` di `amdgpu_gem_op_ioctl()` mantiene tre risorse tracciate per il cleanup prima di chiamare `kvcalloc()`: il riferimento a `drm_gem_object` restituito da `drm_gem_object_lookup()`, il lock `drm_exec` sull'oggetto GEM recuperato tramite `drm_exec_lock_obj()`, e il lock `drm_exec` sulla directory delle pagine radice della VM per-processo tramite `amdgpu_vm_lock_pd()`. Tutte e tre le risorse vengono rilasciate dall'etichetta `out_exec`, a cui saltano tutti gli altri percorsi di errore in questa funzione. Il percorso di fallimento di `kvcalloc()` restituisce direttamente `-ENOMEM`, saltando `out_exec` e causando la perdita (leak) di tutte e tre le risorse.
La perdita del lock `dma_resv` della directory delle pagine radice per-processo è quella critica: qualsiasi operazione successiva sulla stessa VM (ulteriori operazioni GEM, sottomissione di comandi, eviction, callback dello shrinker TTM) va in blocco sul lock detenuto. Poiché `DRM_IOCTL_AMDGPU_GEM_OP` ha i flag `DRM_AUTH | DRM_RENDER_ALLOW`, si tratta di un denial of service locale non privilegiato contro il contesto GPU del chiamante, raggiungibile da qualsiasi processo con accesso a `/dev/dri/renderD*`.
Instradare il fallimento attraverso `out_exec` in modo che vengano eseguite `drm_exec_fini()` e `drm_gem_object_put()`.
Riproduzione effettuata su kernel stock 7.0.0-10, Ryzen 7 5700U / Radeon Vega (Lucienne): l'ioctl fallito restituisce `-ENOMEM` e una seconda chiamata a `GET_MAPPING_INFO` sullo stesso fd va poi in blocco in `drm_exec_lock_obj()` sul lock `dma_resv` perso. L'invio di SIGKILL al chiamante non conclude il task; il percorso di rilascio del fd durante l'uscita dal processo passa attraverso `amdgpu_gem_object_close()` -> `drm_exec_prepare_obj()` sullo stesso lock, lasciando il task in stato D fino al riavvio della macchina. Il kernel patchato non è stato ricompilato e ritestato su questo hardware; la correzione è meccanica. Testata solo su un singolo sistema Lucienne / Vega.
Ziyi Guo ha pubblicato una verifica indipendente del limite INT_MAX per `args->num_entries` nello stesso ramo [1]; le due patch sono complementari e possono essere applicate in qualsiasi ordine.
(cherry picked from commit b69d3256d79de15f54c322986ff4da68f1d65b0a)
If you want to get the best quality for vulnerability data then you always have to consider VulDB.