CVE-2026-90236 in Linuxinformation

Résumé

par VulDB • 18/09/2026

Dans le noyau Linux, la vulnérabilité suivante a été corrigée :

NFSD : Libérer la référence d'exportation lors du nettoyage des stateids ouverts

nfs4_put_stid() libère l’svc_export suivi dans nfs4_stid.sc_export, mais free_ol_stateid_reaplist() libère les stateids ouverts et de verrouillage en appelant directement ->sc_free(), contournant ainsi ce chemin. Un stateid ouvert prend une référence sc_export dans nfs4_open() et un stateid de verrouillage prend la sienne propre dans init_lock_stateid(); tous deux atteignent free_ol_stateid_reaplist() via leur désassemblage normal, le stateid ouvert via release_open_stateid() et le stateid de verrouillage via nfsd4_release_lockowner(), chacun passant par put_ol_stateid_locked(). La référence n'est donc jamais décrémentée, ce qui épingl l'exportation et bloque le démontage pendant toute la durée de vie du stateid.

Libérez sc_export dans free_ol_stateid_reaplist() de la même manière que nfs4_put_stid(). ->sc_free() s'exécute une fois par stateid, et un stateid atteint soit free_ol_stateid_reaplist(), soit nfs4_put_stid(), mais jamais les deux, donc la référence est décrémentée exactement une fois. Les stateids révoqués atteignent ce chemin avec sc_export déjà effacé par drop_stid_export(), ils sont donc ignorés plutôt que libérés doublement.

nfs4_put_stid() lit lui-même sc_export avant d'acquérir cl_lock. drop_stid_export() efface ce champ et libère la référence sous cl_lock, de sorte qu'une révocation concurrente pourrait libérer l'exportation dans la fenêtre entre la lecture et le put final, libérant ainsi la même référence deux fois. Lisez sc_export tandis que cl_lock est détenu afin que les deux chemins soient sérialisés et que la référence soit libérée exactement une fois.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Sources

Do you know our Splunk app?

Download it now for free!