« Volver al listado

CVE-2026-68150

Estado: RecibidaSin puntuar—

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

fs/super: fix emergency thaw double-unlock of s_umount

do_thaw_all() iterates over all superblocks via __iterate_supers() with SUPER_ITER_EXCL, which acquires s_umount exclusively before calling the callback and releases it afterwards. However, the callback do_thaw_all_callback() calls thaw_super_locked() which unconditionally releases s_umount on every code path. This results in a second unlock attempt in __iterate_supers() that corrupts the rwsem state, triggering a DEBUG_RWSEMS warning:

Fix this by switching to SUPER_ITER_UNLOCKED and acquiring s_umount in the callback via super_lock_excl() before calling thaw_super_locked(). This matches the locking pattern expected by thaw_super_locked() and eliminates the double unlock.

Leer descripción completaMostrar menos

While at it, remove the dead 'return;' at the end of do_thaw_all_callback().

Detalles técnicos trazas, registros y código del informe original
[  182.601148] sysrq: Emergency Thaw of all frozen filesystems
[  182.601865] ------------[ cut here ]------------
[  182.602375] DEBUG_RWSEMS_WARN_ON((rwsem_owner(sem) != current) && !rwsem_test_oflags(sem, RWSEM_NONSPINNABLE)): count = 0x0, magic = 0xffff99b1011e5870, owner = 0x0, curr 0xffff99b101b06c80, list not empty
[  182.603817] WARNING: kernel/locking/rwsem.c:1412 at up_write+0xa3/0x170, CPU#2: kworker/2:1/53
[  182.604578] Modules linked in:
[  182.604864] CPU: 2 UID: 0 PID: 53 Comm: kworker/2:1 Not tainted 7.2.0-rc4-00001-gbd3bd93ea98a-dirty #4 PREEMPT(lazy)
[  182.605711] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1kylin1 04/01/2014
[  182.606417] Workqueue: events do_thaw_all
[  182.606750] RIP: 0010:up_write+0xaf/0x170
[  182.607076] Code: 19 3a 92 48 0f 44 c2 48 8b 55 08 48 8b 55 00 4c 8b 45 08 48 8b 55 00 48 8d 3d ad 91 e0 01 48 8b 4d 20 50 48 c7 c6 f0 8c 26 92 <67> 48 0f b9 3a e8 d7 93 4e 00 58 eb 81 48 83 7f 18 00 48 c7 c2 8d
[  182.608563] RSP: 0018:ffffb670001d7e08 EFLAGS: 00010246
[  182.609007] RAX: ffffffff92349e8d RBX: 0000000000000000 RCX: ffff99b1011e5870
[  182.609595] RDX: 0000000000000000 RSI: ffffffff92268cf0 RDI: ffffffff92914d10
[  182.610283] RBP: ffff99b1011e5870 R08: 0000000000000000 R09: ffff99b101b06c80
[  182.610847] R10: ffff99b10139a808 R11: fefefefefefefeff R12: 0000000000000000
[  182.611414] R13: ffffffff90cf74d0 R14: 0000000000000000 R15: ffff99b1011e5800
[  182.612009] FS:  0000000000000000(0000) GS:ffff99b1eaaee000(0000) knlGS:0000000000000000
[  182.612670] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  182.613146] CR2: 00000000005c631c CR3: 00000000013ee000 CR4: 00000000000006f0
[  182.613722] Call Trace:
[  182.613946]  <TASK>
[  182.614130]  __iterate_supers+0x128/0x150
[  182.614463]  do_thaw_all+0x1b/0x30
[  182.614759]  process_scheduled_works+0xbb/0x3f0
[  182.615150]  ? __pfx_worker_thread+0x10/0x10
[  182.615499]  worker_thread+0x129/0x270
[  182.615816]  ? __pfx_worker_thread+0x10/0x10
[  182.616201]  kthread+0xe2/0x120
[  182.616469]  ? __pfx_kthread+0x10/0x10
[  182.616792]  ret_from_fork+0x15b/0x240
[  182.617115]  ? __pfx_kthread+0x10/0x10
[  182.617426]  ret_from_fork_asm+0x1a/0x30
[  182.617761]  </TASK>
[  182.617968] ---[ end trace 0000000000000000 ]---
[  182.618412] Emergency Thaw complete

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-68150",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "96a7883817a29fcbb46f70f0302ed455f7203c74",
              "lessThan": "79e04370657a2581e3189f9c7fc166e7c4fbab3a",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "2992476528aeecbaee17ba0a6396a817481205a3",
              "lessThan": "c78e38745ff1b0457c4551e7f75ea15842df1169",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "2992476528aeecbaee17ba0a6396a817481205a3",
              "lessThan": "64017df6e61a3ce7159cee284109b92009985361",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "2992476528aeecbaee17ba0a6396a817481205a3",
              "lessThan": "503d67fbaec6fdeaba391cb497675071db9d16ea",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "fs/super.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.16"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.16",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.18.42",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.1.6",
              "versionType": "semver",
              "lessThanOrEqual": "7.1.*"
            },
            {
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "fs/super.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-08-10T13:20:01.010",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/503d67fbaec6fdeaba391cb497675071db9d16ea",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/64017df6e61a3ce7159cee284109b92009985361",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/79e04370657a2581e3189f9c7fc166e7c4fbab3a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/c78e38745ff1b0457c4551e7f75ea15842df1169",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/super: fix emergency thaw double-unlock of s_umount\n\ndo_thaw_all() iterates over all superblocks via __iterate_supers()\nwith SUPER_ITER_EXCL, which acquires s_umount exclusively before\ncalling the callback and releases it afterwards. However, the\ncallback do_thaw_all_callback() calls thaw_super_locked() which\nunconditionally releases s_umount on every code path. This results\nin a second unlock attempt in __iterate_supers() that corrupts the\nrwsem state, triggering a DEBUG_RWSEMS warning:\n\n[  182.601148] sysrq: Emergency Thaw of all frozen filesystems\n[  182.601865] ------------[ cut here ]------------\n[  182.602375] DEBUG_RWSEMS_WARN_ON((rwsem_owner(sem) != current) && !rwsem_test_oflags(sem, RWSEM_NONSPINNABLE)): count = 0x0, magic = 0xffff99b1011e5870, owner = 0x0, curr 0xffff99b101b06c80, list not empty\n[  182.603817] WARNING: kernel/locking/rwsem.c:1412 at up_write+0xa3/0x170, CPU#2: kworker/2:1/53\n[  182.604578] Modules linked in:\n[  182.604864] CPU: 2 UID: 0 PID: 53 Comm: kworker/2:1 Not tainted 7.2.0-rc4-00001-gbd3bd93ea98a-dirty #4 PREEMPT(lazy)\n[  182.605711] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.13.0-1kylin1 04/01/2014\n[  182.606417] Workqueue: events do_thaw_all\n[  182.606750] RIP: 0010:up_write+0xaf/0x170\n[  182.607076] Code: 19 3a 92 48 0f 44 c2 48 8b 55 08 48 8b 55 00 4c 8b 45 08 48 8b 55 00 48 8d 3d ad 91 e0 01 48 8b 4d 20 50 48 c7 c6 f0 8c 26 92 <67> 48 0f b9 3a e8 d7 93 4e 00 58 eb 81 48 83 7f 18 00 48 c7 c2 8d\n[  182.608563] RSP: 0018:ffffb670001d7e08 EFLAGS: 00010246\n[  182.609007] RAX: ffffffff92349e8d RBX: 0000000000000000 RCX: ffff99b1011e5870\n[  182.609595] RDX: 0000000000000000 RSI: ffffffff92268cf0 RDI: ffffffff92914d10\n[  182.610283] RBP: ffff99b1011e5870 R08: 0000000000000000 R09: ffff99b101b06c80\n[  182.610847] R10: ffff99b10139a808 R11: fefefefefefefeff R12: 0000000000000000\n[  182.611414] R13: ffffffff90cf74d0 R14: 0000000000000000 R15: ffff99b1011e5800\n[  182.612009] FS:  0000000000000000(0000) GS:ffff99b1eaaee000(0000) knlGS:0000000000000000\n[  182.612670] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\n[  182.613146] CR2: 00000000005c631c CR3: 00000000013ee000 CR4: 00000000000006f0\n[  182.613722] Call Trace:\n[  182.613946]  <TASK>\n[  182.614130]  __iterate_supers+0x128/0x150\n[  182.614463]  do_thaw_all+0x1b/0x30\n[  182.614759]  process_scheduled_works+0xbb/0x3f0\n[  182.615150]  ? __pfx_worker_thread+0x10/0x10\n[  182.615499]  worker_thread+0x129/0x270\n[  182.615816]  ? __pfx_worker_thread+0x10/0x10\n[  182.616201]  kthread+0xe2/0x120\n[  182.616469]  ? __pfx_kthread+0x10/0x10\n[  182.616792]  ret_from_fork+0x15b/0x240\n[  182.617115]  ? __pfx_kthread+0x10/0x10\n[  182.617426]  ret_from_fork_asm+0x1a/0x30\n[  182.617761]  </TASK>\n[  182.617968] ---[ end trace 0000000000000000 ]---\n[  182.618412] Emergency Thaw complete\n\nFix this by switching to SUPER_ITER_UNLOCKED and acquiring s_umount\nin the callback via super_lock_excl() before calling\nthaw_super_locked(). This matches the locking pattern expected by\nthaw_super_locked() and eliminates the double unlock.\n\nWhile at it, remove the dead 'return;' at the end of\ndo_thaw_all_callback()."
    }
  ],
  "lastModified": "2026-08-23T13:16:34.210",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}