CVE-2026-64378 (GCVE-0-2026-64378)
Vulnerability from cvelistv5
Published
2026-07-25 08:50
Modified
2026-10-19 20:38
Summary
In the Linux kernel, the following vulnerability has been resolved: writeback: fix race between cgroup_writeback_umount() and inode_switch_wbs() When a container exits, the following BUG_ON() is occasionally triggered: ================================================================== VFS: Busy inodes after unmount of sdb (ext4) ------------[ cut here ]------------ kernel BUG at fs/super.c:695! CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1 pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : generic_shutdown_super+0xf0/0x100 lr : generic_shutdown_super+0xf0/0x100 Call trace: generic_shutdown_super+0xf0/0x100 kill_block_super+0x20/0x48 ext4_kill_sb+0x28/0x60 deactivate_locked_super+0x54/0x130 deactivate_super+0x84/0xa0 cleanup_mnt+0xa4/0x140 __cleanup_mnt+0x18/0x28 task_work_run+0x78/0xe0 do_notify_resume+0x204/0x240 ================================================================== The root cause is a race between cgroup_writeback_umount() and inode_switch_wbs()/cleanup_offline_cgwb(). There is a window between inode_prepare_wbs_switch() returning true and the subsequent wb_queue_isw() call. Following is the process that triggers the issue: CPU A (umount) | CPU B (writeback) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inode_switch_wbs/cleanup_offline_cgwb atomic_inc(&isw_nr_in_flight) inode_prepare_wbs_switch -> passes SB_ACTIVE check __iget(inode) generic_shutdown_super sb->s_flags &= ~SB_ACTIVE cgroup_writeback_umount(sb) smp_mb() atomic_read(&isw_nr_in_flight) rcu_barrier() -> no pending RCU callbacks flush_workqueue(isw_wq) -> nothing queued, returns evict_inodes(sb) -> Inode skipped as isw still holds a ref. sop->put_super(sb) /* destroys percpu counters */ -> VFS: Busy inodes after unmount! wb_queue_isw() queue_work(isw_wq, ...) /* later in work function */ inode_switch_wbs_work_fn process_inode_switch_wbs iput() -> evict percpu_counter_dec() // UAF! Fix this by extending the RCU read-side critical section in inode_switch_wbs() and cleanup_offline_cgwb() to cover from inode_prepare_wbs_switch() through wb_queue_isw(). Since there is no sleep in this window, rcu_read_lock() can be used. Then add a synchronize_rcu() in cgroup_writeback_umount() before the existing rcu_barrier(), so that all in-flight switchers that have passed the SB_ACTIVE check have completed queue_work() before flush_workqueue() is called. The existing rcu_barrier() is intentionally retained so this fix can be backported unchanged to stable kernels (5.10.y, 6.6.y, ...) that still queue switches via queue_rcu_work(). It is a no-op on current mainline (since commit e1b849cfa6b6 ("writeback: Avoid contention on wb->list_lock when switching inodes")) and is removed in a follow-up patch.
Impacted products
Vendor Product Version
Linux Linux Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: a1a0e23e49037c23ea84bc8cc146a03584d13577
Version: c5cbbec54fe71c4de2d34f8c0ec8fbfdd7f17339
Version: 4.4.5   ≤
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-64378",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T15:39:41.597767Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-362",
                "description": "CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization (\u0027Race Condition\u0027)",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-19T20:38:25.561Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/fs-writeback.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "087d5b8b501c570f84bf655164e6698c3ce146e0",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "3c9c9648f77e4d14e50676bc51c2174ba9c8d361",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "5c3265f3252b2ee50707adaaa3f9bd0df3df72de",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "c923cc3cb5cd8945ceaf08252754110643446593",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "685fc15a410885b6d4dee64de0dce721b9428b12",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "53eeaf4d63068dbc7708b0c7adb20151c812feca",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "lessThan": "cba38ec4cbd3a7b8b942a8d52531a05be8a9ff0d",
              "status": "affected",
              "version": "a1a0e23e49037c23ea84bc8cc146a03584d13577",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "c5cbbec54fe71c4de2d34f8c0ec8fbfdd7f17339",
              "versionType": "git"
            },
            {
              "lessThan": "4.5",
              "status": "affected",
              "version": "4.4.5",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/fs-writeback.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.5"
            },
            {
              "lessThan": "4.5",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.261",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.178",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.145",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.96",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.261",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.178",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.145",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.96",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.39",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.4",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "4.5",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.4.5",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwriteback: fix race between cgroup_writeback_umount() and inode_switch_wbs()\n\nWhen a container exits, the following BUG_ON() is occasionally triggered:\n\n==================================================================\n VFS: Busy inodes after unmount of sdb (ext4)\n ------------[ cut here ]------------\n kernel BUG at fs/super.c:695!\n CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1\n pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)\n pc : generic_shutdown_super+0xf0/0x100\n lr : generic_shutdown_super+0xf0/0x100\n Call trace:\n  generic_shutdown_super+0xf0/0x100\n  kill_block_super+0x20/0x48\n  ext4_kill_sb+0x28/0x60\n  deactivate_locked_super+0x54/0x130\n  deactivate_super+0x84/0xa0\n  cleanup_mnt+0xa4/0x140\n  __cleanup_mnt+0x18/0x28\n  task_work_run+0x78/0xe0\n  do_notify_resume+0x204/0x240\n==================================================================\n\nThe root cause is a race between cgroup_writeback_umount() and\ninode_switch_wbs()/cleanup_offline_cgwb(). There is a window between\ninode_prepare_wbs_switch() returning true and the subsequent\nwb_queue_isw() call. Following is the process that triggers the issue:\n\n      CPU A (umount)           |          CPU B (writeback)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n                                 inode_switch_wbs/cleanup_offline_cgwb\n                                  atomic_inc(\u0026isw_nr_in_flight)\n                                  inode_prepare_wbs_switch\n                                   -\u003e passes SB_ACTIVE check\n                                   __iget(inode)\n generic_shutdown_super\n  sb-\u003es_flags \u0026= ~SB_ACTIVE\n  cgroup_writeback_umount(sb)\n   smp_mb()\n   atomic_read(\u0026isw_nr_in_flight)\n   rcu_barrier()\n    -\u003e no pending RCU callbacks\n   flush_workqueue(isw_wq)\n    -\u003e nothing queued, returns\n  evict_inodes(sb)\n   -\u003e Inode skipped as isw still holds a ref.\n  sop-\u003eput_super(sb)\n   /* destroys percpu counters */\n  -\u003e VFS: Busy inodes after unmount!\n                                  wb_queue_isw()\n                                   queue_work(isw_wq, ...)\n                                  /* later in work function */\n                                  inode_switch_wbs_work_fn\n                                   process_inode_switch_wbs\n                                    iput() -\u003e evict\n                                     percpu_counter_dec() // UAF!\n\nFix this by extending the RCU read-side critical section in\ninode_switch_wbs() and cleanup_offline_cgwb() to cover from\ninode_prepare_wbs_switch() through wb_queue_isw().  Since there is\nno sleep in this window, rcu_read_lock() can be used.  Then add a\nsynchronize_rcu() in cgroup_writeback_umount() before the existing\nrcu_barrier(), so that all in-flight switchers that have passed the\nSB_ACTIVE check have completed queue_work() before flush_workqueue()\nis called.\n\nThe existing rcu_barrier() is intentionally retained so this fix can\nbe backported unchanged to stable kernels (5.10.y, 6.6.y, ...) that\nstill queue switches via queue_rcu_work(). It is a no-op on current\nmainline (since commit e1b849cfa6b6 (\"writeback: Avoid contention on\nwb-\u003elist_lock when switching inodes\")) and is removed in a follow-up\npatch."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is reached through local filesystem writes, cgroup teardown, and mount-namespace or filesystem unmount paths; no network protocol directly reaches the race.\nAC:L - An attacker can churn cgroup writeback switches while repeatedly triggering container or mount teardown, controlling both racing activities and amplifying the timing window.\nPR:L - A basic local or container user can dirty writable files and initiate its own cgroup or namespace teardown; lifecycle infrastructure can perform the privileged final unmount automatically.\nUI:N - The attacker can generate the writeback state and trigger teardown without requiring another user to perform an action.\nS:U - The resulting corruption affects the same host kernel security authority and does not inherently cross a VM or hardware isolation boundary.\nC:H - The delayed worker can access superblock-private state after it and its per-CPU counters have been freed, creating an exploitable use-after-free capable of exposing arbitrary kernel memory.\nI:H - The freed superblock and per-CPU counter pointers are subsequently dereferenced and modified, potentially providing attacker-influenced kernel writes and control-flow hijacking.\nA:H - The race demonstrably triggers the busy-inode BUG_ON, and configurations continuing past that check encounter a use-after-free capable of causing an oops or kernel panic."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T04:54:29.511Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/087d5b8b501c570f84bf655164e6698c3ce146e0"
        },
        {
          "url": "https://git.kernel.org/stable/c/3c9c9648f77e4d14e50676bc51c2174ba9c8d361"
        },
        {
          "url": "https://git.kernel.org/stable/c/5c3265f3252b2ee50707adaaa3f9bd0df3df72de"
        },
        {
          "url": "https://git.kernel.org/stable/c/c923cc3cb5cd8945ceaf08252754110643446593"
        },
        {
          "url": "https://git.kernel.org/stable/c/685fc15a410885b6d4dee64de0dce721b9428b12"
        },
        {
          "url": "https://git.kernel.org/stable/c/53eeaf4d63068dbc7708b0c7adb20151c812feca"
        },
        {
          "url": "https://git.kernel.org/stable/c/cba38ec4cbd3a7b8b942a8d52531a05be8a9ff0d"
        }
      ],
      "title": "writeback: fix race between cgroup_writeback_umount() and inode_switch_wbs()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-64378",
    "datePublished": "2026-07-25T08:50:29.006Z",
    "dateReserved": "2026-07-19T15:36:31.784Z",
    "dateUpdated": "2026-10-19T20:38:25.561Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-64378\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-16T15:39:41.597767Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-362\", \"description\": \"CWE-362 Concurrent Execution using Shared Resource with Improper Synchronization (\u0027Race Condition\u0027)\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-16T15:39:42.329Z\"}}], \"cna\": {\"title\": \"writeback: fix race between cgroup_writeback_umount() and inode_switch_wbs()\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 7.8, \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerability is reached through local filesystem writes, cgroup teardown, and mount-namespace or filesystem unmount paths; no network protocol directly reaches the race.\\nAC:L - An attacker can churn cgroup writeback switches while repeatedly triggering container or mount teardown, controlling both racing activities and amplifying the timing window.\\nPR:L - A basic local or container user can dirty writable files and initiate its own cgroup or namespace teardown; lifecycle infrastructure can perform the privileged final unmount automatically.\\nUI:N - The attacker can generate the writeback state and trigger teardown without requiring another user to perform an action.\\nS:U - The resulting corruption affects the same host kernel security authority and does not inherently cross a VM or hardware isolation boundary.\\nC:H - The delayed worker can access superblock-private state after it and its per-CPU counters have been freed, creating an exploitable use-after-free capable of exposing arbitrary kernel memory.\\nI:H - The freed superblock and per-CPU counter pointers are subsequently dereferenced and modified, potentially providing attacker-influenced kernel writes and control-flow hijacking.\\nA:H - The race demonstrably triggers the busy-inode BUG_ON, and configurations continuing past that check encounter a use-after-free capable of causing an oops or kernel panic.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"087d5b8b501c570f84bf655164e6698c3ce146e0\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"3c9c9648f77e4d14e50676bc51c2174ba9c8d361\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"5c3265f3252b2ee50707adaaa3f9bd0df3df72de\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"c923cc3cb5cd8945ceaf08252754110643446593\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"685fc15a410885b6d4dee64de0dce721b9428b12\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"53eeaf4d63068dbc7708b0c7adb20151c812feca\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"a1a0e23e49037c23ea84bc8cc146a03584d13577\", \"lessThan\": \"cba38ec4cbd3a7b8b942a8d52531a05be8a9ff0d\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"c5cbbec54fe71c4de2d34f8c0ec8fbfdd7f17339\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"4.4.5\", \"lessThan\": \"4.5\", \"versionType\": \"semver\"}], \"programFiles\": [\"fs/fs-writeback.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4.5\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"4.5\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"5.10.261\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"5.10.*\"}, {\"status\": \"unaffected\", \"version\": \"6.1.178\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.1.*\"}, {\"status\": \"unaffected\", \"version\": \"6.6.145\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.12.96\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.12.*\"}, {\"status\": \"unaffected\", \"version\": \"6.18.39\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.18.*\"}, {\"status\": \"unaffected\", \"version\": \"7.1.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"7.1.*\"}, {\"status\": \"unaffected\", \"version\": \"7.2\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"fs/fs-writeback.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/087d5b8b501c570f84bf655164e6698c3ce146e0\"}, {\"url\": \"https://git.kernel.org/stable/c/3c9c9648f77e4d14e50676bc51c2174ba9c8d361\"}, {\"url\": \"https://git.kernel.org/stable/c/5c3265f3252b2ee50707adaaa3f9bd0df3df72de\"}, {\"url\": \"https://git.kernel.org/stable/c/c923cc3cb5cd8945ceaf08252754110643446593\"}, {\"url\": \"https://git.kernel.org/stable/c/685fc15a410885b6d4dee64de0dce721b9428b12\"}, {\"url\": \"https://git.kernel.org/stable/c/53eeaf4d63068dbc7708b0c7adb20151c812feca\"}, {\"url\": \"https://git.kernel.org/stable/c/cba38ec4cbd3a7b8b942a8d52531a05be8a9ff0d\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\nwriteback: fix race between cgroup_writeback_umount() and inode_switch_wbs()\\n\\nWhen a container exits, the following BUG_ON() is occasionally triggered:\\n\\n==================================================================\\n VFS: Busy inodes after unmount of sdb (ext4)\\n ------------[ cut here ]------------\\n kernel BUG at fs/super.c:695!\\n CPU: 3 PID: 6 Comm: containerd-shim Tainted: G OE K 6.6 #1\\n pstate: 63400009 (nZCv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--)\\n pc : generic_shutdown_super+0xf0/0x100\\n lr : generic_shutdown_super+0xf0/0x100\\n Call trace:\\n  generic_shutdown_super+0xf0/0x100\\n  kill_block_super+0x20/0x48\\n  ext4_kill_sb+0x28/0x60\\n  deactivate_locked_super+0x54/0x130\\n  deactivate_super+0x84/0xa0\\n  cleanup_mnt+0xa4/0x140\\n  __cleanup_mnt+0x18/0x28\\n  task_work_run+0x78/0xe0\\n  do_notify_resume+0x204/0x240\\n==================================================================\\n\\nThe root cause is a race between cgroup_writeback_umount() and\\ninode_switch_wbs()/cleanup_offline_cgwb(). There is a window between\\ninode_prepare_wbs_switch() returning true and the subsequent\\nwb_queue_isw() call. Following is the process that triggers the issue:\\n\\n      CPU A (umount)           |          CPU B (writeback)\\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\\n                                 inode_switch_wbs/cleanup_offline_cgwb\\n                                  atomic_inc(\u0026isw_nr_in_flight)\\n                                  inode_prepare_wbs_switch\\n                                   -\u003e passes SB_ACTIVE check\\n                                   __iget(inode)\\n generic_shutdown_super\\n  sb-\u003es_flags \u0026= ~SB_ACTIVE\\n  cgroup_writeback_umount(sb)\\n   smp_mb()\\n   atomic_read(\u0026isw_nr_in_flight)\\n   rcu_barrier()\\n    -\u003e no pending RCU callbacks\\n   flush_workqueue(isw_wq)\\n    -\u003e nothing queued, returns\\n  evict_inodes(sb)\\n   -\u003e Inode skipped as isw still holds a ref.\\n  sop-\u003eput_super(sb)\\n   /* destroys percpu counters */\\n  -\u003e VFS: Busy inodes after unmount!\\n                                  wb_queue_isw()\\n                                   queue_work(isw_wq, ...)\\n                                  /* later in work function */\\n                                  inode_switch_wbs_work_fn\\n                                   process_inode_switch_wbs\\n                                    iput() -\u003e evict\\n                                     percpu_counter_dec() // UAF!\\n\\nFix this by extending the RCU read-side critical section in\\ninode_switch_wbs() and cleanup_offline_cgwb() to cover from\\ninode_prepare_wbs_switch() through wb_queue_isw().  Since there is\\nno sleep in this window, rcu_read_lock() can be used.  Then add a\\nsynchronize_rcu() in cgroup_writeback_umount() before the existing\\nrcu_barrier(), so that all in-flight switchers that have passed the\\nSB_ACTIVE check have completed queue_work() before flush_workqueue()\\nis called.\\n\\nThe existing rcu_barrier() is intentionally retained so this fix can\\nbe backported unchanged to stable kernels (5.10.y, 6.6.y, ...) that\\nstill queue switches via queue_rcu_work(). It is a no-op on current\\nmainline (since commit e1b849cfa6b6 (\\\"writeback: Avoid contention on\\nwb-\u003elist_lock when switching inodes\\\")) and is removed in a follow-up\\npatch.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"5.10.261\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.1.178\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.145\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.12.96\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.18.39\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.1.4\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"7.2\", \"versionStartIncluding\": \"4.5\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionStartIncluding\": \"4.4.5\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-17T04:54:29.511Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-64378\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-19T20:38:25.561Z\", \"dateReserved\": \"2026-07-19T15:36:31.784Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2026-07-25T08:50:29.006Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…