In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry before dropping the item in rmdir configfs_get_config_item() treats a hashed dentry as proof that sd->s_element is a live config_item. configfs_rmdir() breaks that: simple_rmdir() leaves the dentry hashed, the last reference to the item is dropped right after, and the dentry is only unhashed by d_delete() once ->rmdir() has returned. configfs_symlink() resolves its target holding no lock on it, so get_target() can land in that window: BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90 get_target fs/configfs/symlink.c:128 [inline] configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185 Unhash in configfs_remove_dir(), while the item is still guaranteed to be there. A reference obtained just before that stays harmless, as create_link() rechecks CONFIGFS_USET_DROPPING, already set by configfs_detach_prep(). Both configfs_unregister_subsystem() paths d_drop() after detaching, so this only makes rmdir match them.

zetlyn/cve-nvd vulnerability cve CVE-2026-97949 known 2026-09-25

https://nvd.nist.gov/vuln/detail/CVE-2026-97949

Properties

productLinux
receipt
Source
NVD
Its words
Linux
Read by
field:cve.affected[].affectedData[].product
Said since
2026-09-29 17:49 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
2026-09-29 17:49 UTCLinux
2026-09-29 09:45 UTC—
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "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\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}
statusReceived
receipt
Source
NVD
Its words
Received
Read by
field:cve.vulnStatus
Said since
2026-09-29 09:45 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "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\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}
vendorLinux
receipt
Source
NVD
Its words
Linux
Read by
field:cve.affected[].affectedData[].vendor
Said since
2026-09-29 17:49 UTC
Last answered
2026-10-06 12:41 UTC
Original
open at the source
2026-09-29 17:49 UTCLinux
2026-09-29 09:45 UTC—
What the source handed over
{
  "cve": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "lessThan": "5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "925d8564f1b2d9b46c5ab63b9bc942cea006da9b",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              },
              {
                "lessThan": "f06c2d26d1999d37e93299db0ecead04ca7d0b9f",
                "status": "affected",
                "version": "7063fbf2261194f72ee75afca67b3b38b554b5fa",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "affected",
            "product": "Linux",
            "programFiles": [
              "fs/configfs/dir.c"
            ],
            "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
            "vendor": "Linux",
            "versions": [
              {
                "status": "affected",
                "version": "2.6.16"
              },
              {
                "lessThan": "2.6.16",
                "status": "unaffected",
                "version": "0",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "6.18.*",
                "status": "unaffected",
                "version": "6.18.53",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "7.2.*",
                "status": "unaffected",
                "version": "7.2.7",
                "versionType": "semver"
              },
              {
                "lessThanOrEqual": "*",
                "status": "unaffected",
                "version": "7.3-rc3",
                "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\nconfigfs: unhash the dentry before dropping the item in rmdir\n\nconfigfs_get_config_item() treats a hashed dentry as proof that\nsd->s_element is a live config_item.  configfs_rmdir() breaks that:\nsimple_rmdir() leaves the dentry hashed, the last reference to the item is\ndropped right after, and the dentry is only unhashed by d_delete() once\n->rmdir() has returned.  configfs_symlink() resolves its target holding no\nlock on it, so get_target() can land in that window:\n\n  BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90\n   get_target fs/configfs/symlink.c:128 [inline]\n   configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185\n\nUnhash in configfs_remove_dir(), while the item is still guaranteed to be\nthere.  A reference obtained just before that stays harmless, as\ncreate_link() rechecks CONFIGFS_USET_DROPPING, already set by\nconfigfs_detach_prep().  Both configfs_unregister_subsystem() paths\nd_drop() after detaching, so this only makes rmdir match them."
      }
    ],
    "id": "CVE-2026-97949",
    "lastModified": "2026-09-25T11:17:22.453",
    "metrics": {},
    "published": "2026-09-25T11:17:22.453",
    "references": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b"
      },
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "url": "https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f"
      }
    ],
    "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "vulnStatus": "Received"
  }
}

Text

In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry before dropping the item in rmdir configfs_get_config_item() treats a hashed dentry as proof that sd->s_element is a live config_item. configfs_rmdir() breaks that: simple_rmdir() leaves the dentry hashed, the last reference to the item is dropped right after, and the dentry is only unhashed by d_delete() once ->rmdir() has returned. configfs_symlink() resolves its target holding no lock on it, so get_target() can land in that window: BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90 get_target fs/configfs/symlink.c:128 [inline] configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185 Unhash in configfs_remove_dir(), while the item is still guaranteed to be there. A reference obtained just before that stays harmless, as create_link() rechecks CONFIGFS_USET_DROPPING, already set by configfs_detach_prep(). Both configfs_unregister_subsystem() paths d_drop() after detaching, so this only makes rmdir match them.