// For flags

CVE-2023-52668

btrfs: zoned: fix lock ordering in btrfs_zone_activate()

Severity Score

"-"
*CVSS v-

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

In the Linux kernel, the following vulnerability has been resolved:

btrfs: zoned: fix lock ordering in btrfs_zone_activate()

The btrfs CI reported a lockdep warning as follows by running generic
generic/129.

WARNING: possible circular locking dependency detected
6.7.0-rc5+ #1 Not tainted
------------------------------------------------------
kworker/u5:5/793427 is trying to acquire lock:
ffff88813256d028 (&cache->lock){+.+.}-{2:2}, at: btrfs_zone_finish_one_bg+0x5e/0x130
but task is already holding lock:
ffff88810a23a318 (&fs_info->zone_active_bgs_lock){+.+.}-{2:2}, at: btrfs_zone_finish_one_bg+0x34/0x130
which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:
-> #1 (&fs_info->zone_active_bgs_lock){+.+.}-{2:2}:
...
-> #0 (&cache->lock){+.+.}-{2:2}:
...

This is because we take fs_info->zone_active_bgs_lock after a block_group's
lock in btrfs_zone_activate() while doing the opposite in other places.

Fix the issue by expanding the fs_info->zone_active_bgs_lock's critical
section and taking it before a block_group's lock.

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: btrfs:zoned: corrige el orden de bloqueo en btrfs_zone_activate() El CI de btrfs informó una advertencia de bloqueo de la siguiente manera al ejecutar generic generic/129. ADVERTENCIA: se detectó posible dependencia de bloqueo circular 6.7.0-rc5+ #1 No contaminado ---------------------------------- -------------------- kworker/u5:5/793427 está intentando adquirir el bloqueo: ffff88813256d028 (&cache->lock){+.+.}-{2: 2}, en: btrfs_zone_finish_one_bg+0x5e/0x130 pero la tarea ya mantiene el bloqueo: ffff88810a23a318 (&fs_info->zone_active_bgs_lock){+.+.}-{2:2}, en: btrfs_zone_finish_one_bg+0x34/0x130 cuyo bloqueo ya depende del cerradura nueva. la cadena de dependencia existente (en orden inverso) es: -> #1 (&fs_info->zone_active_bgs_lock){+.+.}-{2:2}: ... -> #0 (&cache->lock){+. +.}-{2:2}: ... Esto se debe a que tomamos fs_info->zone_active_bgs_lock después del bloqueo de un block_group en btrfs_zone_activate() mientras hacemos lo contrario en otros lugares. Solucione el problema expandiendo la sección crítica de fs_info->zone_active_bgs_lock y llevándola antes del bloqueo de block_group.

*Credits: N/A
CVSS Scores
Attack Vector
-
Attack Complexity
-
Privileges Required
-
User Interaction
-
Scope
-
Confidentiality
-
Integrity
-
Availability
-
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-03-07 CVE Reserved
  • 2024-05-17 CVE Published
  • 2024-05-18 EPSS Updated
  • 2024-08-02 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.6 < 6.6.15
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.6 < 6.6.15"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.6 < 6.7.3
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.6 < 6.7.3"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
>= 6.6 < 6.8
Search vendor "Linux" for product "Linux Kernel" and version " >= 6.6 < 6.8"
en
Affected