CVE-2025-68359 in Linuxinformation

Résumé

par VulDB • 27/06/2026

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

btrfs : correction d'un double free (libération double) de l'enregistrement qgroup après un échec lors de l'ajout du chef de référence retardé (delayed ref head).

Dans le code précédent, il était possible de se retrouver dans une situation de double kfree() lors de l'appel à add_delayed_ref_head(). Cela pouvait se produire si l'enregistrement était signalé comme existant déjà dans l'appel btrfs_qgroup_trace_extent_nolock(), mais qu'une erreur survenait ultérieurement au sein d'add_delayed_ref_head(). Dans ce cas, puisque add_delayed_ref_head() a retourné une erreur, l'appelant procédait à la libération de l'enregistrement. Comme add_delayed_ref_head() ne pouvait pas définir le pointeur kfree'd sur NULL, alors kfree() aurait agi sur un objet 'record' non-NULL qui pointait vers une mémoire déjà libérée par le callee (la fonction appelée).

Le problème provient du fait que la responsabilité de libérer l'objet via kfree incombe simultanément à l'appelant et au callee. Par conséquent, la correction consiste à transférer la propriété de l'objet 'qrecord' hors d'add_delayed_ref_head(). Autrement dit, nous n'essaierons jamais de kfree() l'objet donné à l'intérieur de cette fonction, et nous attendrons que l'appelant agisse sur l'objet 'qrecord' par ses propres moyens. La seule exception où l'objet 'qrecord' ne peut pas être libéré via kfree est s'il a été inséré dans la logique de traçage (tracing logic), pour laquelle nous disposons déjà du booléen 'qrecord_inserted_ret' afin d'en tenir compte. Ainsi, l'appelant doit libérer l'objet uniquement si add_delayed_ref_head() signale ne pas l'avoir inséré dans la logique de traçage.

En tant qu'effet secondaire des éléments ci-dessus, nous devons garantir que 'qrecord_inserted_ret' est correctement initialisé au début de la fonction, et non à la fin, puis défini lorsqu'une insertion réelle se produit. De cette manière, nous évitons que 'qrecord_inserted_ret' ait une valeur invalide lors d'une sortie anticipée (early exit).

La documentation de add_delayed_ref_head() a également été mise à jour pour refléter la propriété exacte de l'objet 'qrecord'.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Linux

Réserver

16/12/2025

Divulgation

24/12/2025

Modérer

accepté

Entrée

VDB-338233

CPE

prêt

EPSS

0.00167

KEV

non

Activités

très faible

Sources

Want to know what is going to be exploited?

We predict KEV entries!