GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2026-93100 (GCVE-0-2026-93100)

Vulnerability from cvelistv5 – Published: 2026-09-17 16:11 – Updated: 2026-09-17 16:11
VLAI
Title
fs/resctrl: Prevent use-after-free in rdtgroup_kn_put()
Summary
In the Linux kernel, the following vulnerability has been resolved: fs/resctrl: Prevent use-after-free in rdtgroup_kn_put() A struct rdtgroup is reference counted via rdtgroup::waitcount. Callers that need the structure to remain valid across a sleep (while waiting on acquiring rdtgroup_mutex) take a reference with rdtgroup_kn_get() and release it with rdtgroup_kn_put(). The release path is intended to serve as the fallback freer: if the count drops to zero and the group has already been marked RDT_DELETED, rdtgroup_kn_put() frees the structure. The bulk teardown paths free_all_child_rdtgrp() and rmdir_all_sub() resulting from a resctrl directory remove or resctrl fs unmount act as the primary freer: they hold rdtgroup_mutex and free each rdtgroup whose waitcount is zero, otherwise they set RDT_DELETED and leave the freeing to the last waiter. These two freers race. rdtgroup_kn_put() commits waitcount == 0 with atomic_dec_and_test() outside rdtgroup_mutex, then reads rdtgroup::flags. Between those two operations a concurrent caller of free_all_child_rdtgrp() or rmdir_all_sub() (which holds the mutex) can observe waitcount == 0 via atomic_read(), call rdtgroup_remove(), and kfree() the structure. The subsequent read of rdtgroup::flags in rdtgroup_kn_put() is then a use-after-free, and the structure may even be freed twice if the freed memory happens to satisfy the RDT_DELETED flag check. Replace the bare atomic_dec_and_test() with atomic_dec_and_mutex_lock() so that the decrement-to-zero takes rdtgroup_mutex before the count becomes globally visible. The inspection of rdtgroup::flags then runs under the same mutex held by the bulk freers, making the two paths mutually exclusive. The common case where the count does not reach zero remains lock-free. Defer kernfs_unbreak_active_protection() until after the mutex is dropped since kernfs active protections functionally wrap rdtgroup_mutex. Remove resource group, which in turn drops its kernfs reference, after kernfs protection is restored. [ bp: Split the commit messsages into smaller, easier-parseable paragraphs. ]
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b8511ccc75c033f6d54188ea4df7bf1e85778740 , < ae69f936e8ffed553d899ba4c02f8a7461a89e54 (git)
Affected: b8511ccc75c033f6d54188ea4df7bf1e85778740 , < 4c593c62c1499665baebbb41b70e2c9b7e947b86 (git)
Affected: b8511ccc75c033f6d54188ea4df7bf1e85778740 , < f5bcf539484d2d604c2f2330e09487ea090b21c7 (git)
Affected: d20edc0bca5577bab38acb5b190619c922ddebf8 (git)
Affected: 1b006f8cbde9f3dabdfafe2ff7aa9f831ed5b625 (git)
Affected: 40300f986e47dbc8f1d02e5080385f5cf9f85f70 (git)
Affected: b5a4949897ebada8132d54c93208989482503103 (git)
Affected: 4.14.170 , < 4.15 (semver)
Affected: 4.19.102 , < 4.20 (semver)
Affected: 5.4.18 , < 5.5 (semver)
Affected: 5.5.2 , < 5.6 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 5.6
Unaffected: 0 , < 5.6 (semver)
Unaffected: 6.18.52 , ≤ 6.18.* (semver)
Unaffected: 7.2.6 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc1 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/resctrl/rdtgroup.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "ae69f936e8ffed553d899ba4c02f8a7461a89e54",
              "status": "affected",
              "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
              "versionType": "git"
            },
            {
              "lessThan": "4c593c62c1499665baebbb41b70e2c9b7e947b86",
              "status": "affected",
              "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
              "versionType": "git"
            },
            {
              "lessThan": "f5bcf539484d2d604c2f2330e09487ea090b21c7",
              "status": "affected",
              "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "d20edc0bca5577bab38acb5b190619c922ddebf8",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "1b006f8cbde9f3dabdfafe2ff7aa9f831ed5b625",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "40300f986e47dbc8f1d02e5080385f5cf9f85f70",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "b5a4949897ebada8132d54c93208989482503103",
              "versionType": "git"
            },
            {
              "lessThan": "4.15",
              "status": "affected",
              "version": "4.14.170",
              "versionType": "semver"
            },
            {
              "lessThan": "4.20",
              "status": "affected",
              "version": "4.19.102",
              "versionType": "semver"
            },
            {
              "lessThan": "5.5",
              "status": "affected",
              "version": "5.4.18",
              "versionType": "semver"
            },
            {
              "lessThan": "5.6",
              "status": "affected",
              "version": "5.5.2",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/resctrl/rdtgroup.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "lessThan": "5.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.52",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc1",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc1",
                  "versionStartIncluding": "5.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.14.170",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.19.102",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.4.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.5.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/resctrl: Prevent use-after-free in rdtgroup_kn_put()\n\nA struct rdtgroup is reference counted via rdtgroup::waitcount. Callers that\nneed the structure to remain valid across a sleep (while waiting on acquiring\nrdtgroup_mutex) take a reference with rdtgroup_kn_get() and release it with\nrdtgroup_kn_put().\n\nThe release path is intended to serve as the fallback freer: if the count\ndrops to zero and the group has already been marked RDT_DELETED,\nrdtgroup_kn_put() frees the structure.\n\nThe bulk teardown paths free_all_child_rdtgrp() and rmdir_all_sub() resulting\nfrom a resctrl directory remove or resctrl fs unmount act as the primary\nfreer: they hold rdtgroup_mutex and free each rdtgroup whose waitcount is\nzero, otherwise they set RDT_DELETED and leave the freeing to the last waiter.\n\nThese two freers race. rdtgroup_kn_put() commits waitcount == 0 with\natomic_dec_and_test() outside rdtgroup_mutex, then reads rdtgroup::flags.\nBetween those two operations a concurrent caller of free_all_child_rdtgrp()\nor rmdir_all_sub() (which holds the mutex) can observe waitcount == 0 via\natomic_read(), call rdtgroup_remove(), and kfree() the structure.\n\nThe subsequent read of rdtgroup::flags in rdtgroup_kn_put() is then\na use-after-free, and the structure may even be freed twice if the freed\nmemory happens to satisfy the RDT_DELETED flag check.\n\nReplace the bare atomic_dec_and_test() with atomic_dec_and_mutex_lock() so\nthat the decrement-to-zero takes rdtgroup_mutex before the count becomes\nglobally visible. The inspection of rdtgroup::flags then runs under the same\nmutex held by the bulk freers, making the two paths mutually exclusive.\n\nThe common case where the count does not reach zero remains lock-free. Defer\nkernfs_unbreak_active_protection() until after the mutex is dropped since\nkernfs active protections functionally wrap rdtgroup_mutex. Remove resource\ngroup, which in turn drops its kernfs reference, after kernfs protection is\nrestored.\n\n  [ bp: Split the commit messsages into smaller, easier-parseable paragraphs. ]"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-17T16:11:13.077Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/ae69f936e8ffed553d899ba4c02f8a7461a89e54"
        },
        {
          "url": "https://git.kernel.org/stable/c/4c593c62c1499665baebbb41b70e2c9b7e947b86"
        },
        {
          "url": "https://git.kernel.org/stable/c/f5bcf539484d2d604c2f2330e09487ea090b21c7"
        }
      ],
      "title": "fs/resctrl: Prevent use-after-free in rdtgroup_kn_put()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-93100",
    "datePublished": "2026-09-17T16:11:13.077Z",
    "dateReserved": "2026-09-17T16:02:15.085Z",
    "dateUpdated": "2026-09-17T16:11:13.077Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/resctrl/rdtgroup.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "ae69f936e8ffed553d899ba4c02f8a7461a89e54",
                    "status": "affected",
                    "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4c593c62c1499665baebbb41b70e2c9b7e947b86",
                    "status": "affected",
                    "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f5bcf539484d2d604c2f2330e09487ea090b21c7",
                    "status": "affected",
                    "version": "b8511ccc75c033f6d54188ea4df7bf1e85778740",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "d20edc0bca5577bab38acb5b190619c922ddebf8",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "1b006f8cbde9f3dabdfafe2ff7aa9f831ed5b625",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "40300f986e47dbc8f1d02e5080385f5cf9f85f70",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "b5a4949897ebada8132d54c93208989482503103",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "4.15",
                    "status": "affected",
                    "version": "4.14.170",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "4.20",
                    "status": "affected",
                    "version": "4.19.102",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "5.5",
                    "status": "affected",
                    "version": "5.4.18",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "5.6",
                    "status": "affected",
                    "version": "5.5.2",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/resctrl/rdtgroup.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.6"
                  },
                  {
                    "lessThan": "5.6",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.52",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.6",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc1",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/resctrl: Prevent use-after-free in rdtgroup_kn_put()\n\nA struct rdtgroup is reference counted via rdtgroup::waitcount. Callers that\nneed the structure to remain valid across a sleep (while waiting on acquiring\nrdtgroup_mutex) take a reference with rdtgroup_kn_get() and release it with\nrdtgroup_kn_put().\n\nThe release path is intended to serve as the fallback freer: if the count\ndrops to zero and the group has already been marked RDT_DELETED,\nrdtgroup_kn_put() frees the structure.\n\nThe bulk teardown paths free_all_child_rdtgrp() and rmdir_all_sub() resulting\nfrom a resctrl directory remove or resctrl fs unmount act as the primary\nfreer: they hold rdtgroup_mutex and free each rdtgroup whose waitcount is\nzero, otherwise they set RDT_DELETED and leave the freeing to the last waiter.\n\nThese two freers race. rdtgroup_kn_put() commits waitcount == 0 with\natomic_dec_and_test() outside rdtgroup_mutex, then reads rdtgroup::flags.\nBetween those two operations a concurrent caller of free_all_child_rdtgrp()\nor rmdir_all_sub() (which holds the mutex) can observe waitcount == 0 via\natomic_read(), call rdtgroup_remove(), and kfree() the structure.\n\nThe subsequent read of rdtgroup::flags in rdtgroup_kn_put() is then\na use-after-free, and the structure may even be freed twice if the freed\nmemory happens to satisfy the RDT_DELETED flag check.\n\nReplace the bare atomic_dec_and_test() with atomic_dec_and_mutex_lock() so\nthat the decrement-to-zero takes rdtgroup_mutex before the count becomes\nglobally visible. The inspection of rdtgroup::flags then runs under the same\nmutex held by the bulk freers, making the two paths mutually exclusive.\n\nThe common case where the count does not reach zero remains lock-free. Defer\nkernfs_unbreak_active_protection() until after the mutex is dropped since\nkernfs active protections functionally wrap rdtgroup_mutex. Remove resource\ngroup, which in turn drops its kernfs reference, after kernfs protection is\nrestored.\n\n  [ bp: Split the commit messsages into smaller, easier-parseable paragraphs. ]"
          }
        ],
        "id": "CVE-2026-93100",
        "lastModified": "2026-09-17T17:18:04.223",
        "metrics": {},
        "published": "2026-09-17T17:18:04.223",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/4c593c62c1499665baebbb41b70e2c9b7e947b86"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/ae69f936e8ffed553d899ba4c02f8a7461a89e54"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f5bcf539484d2d604c2f2330e09487ea090b21c7"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "suse_vex": {
      "aggregate_severity": "not set",
      "current_release_date": "2026-09-18T00:12:07Z",
      "cve": "CVE-2026-93100",
      "id": "CVE-2026-93100",
      "initial_release_date": "2026-09-18T00:12:07Z",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-93100",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-93100.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…