CVE-2026-90139 (GCVE-0-2026-90139)
Vulnerability from cvelistv5
Published
2026-09-17 16:06
Modified
2026-10-30 12:34
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: fuse: check for NULL root inode in fuse_fill_super_submount fuse_iget() can return NULL when its inode allocation fails, but fuse_fill_super_submount() passed the result straight to get_fuse_inode() and decremented fi->nlookup without checking it: root = fuse_iget(sb, parent_fi->nodeid, ...); fi = get_fuse_inode(root); fi->nlookup--; Inside fuse_iget() the inode allocation can fail and return NULL. The submount root takes the iget5_locked() path, whose alloc_inode() can fail under memory pressure (the auto-submount branch can fail the same way in new_inode() or fuse_alloc_submount_lookup()): inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set, &nodeid); if (!inode) return NULL; A NULL root makes get_fuse_inode() a container_of() on NULL and the nlookup decrement a write to a bogus address, oopsing the mount. With CONFIG_KASAN the following null pointer dereference is reported when the root inode allocation of an auto-submount fails (e.g. under memory pressure): ================================================================== BUG: KASAN: null-ptr-deref in fuse_get_tree_submount+0x656/0x8b0 Read of size 8 at addr 00000000000002b0 by task ls/942 CPU: 0 PID: 942 Comm: ls Tainted: G W 6.6 #15 Call Trace: <TASK> fuse_get_tree_submount+0x656/0x8b0 vfs_get_tree+0x48/0x140 fc_mount+0x13/0x50 fuse_dentry_automount+0x7a/0xb0 __traverse_mounts+0xca/0x330 step_into+0x339/0xac0 path_lookupat+0xc5/0x2f0 filename_lookup+0x163/0x2a0 vfs_statx+0xd5/0x200 do_statx+0x83/0xd0 __x64_sys_statx+0xa0/0xc0 do_syscall_64+0x37/0x90 entry_SYSCALL_64_after_hwframe+0x78/0xe2 </TASK> ================================================================== Return -ENOMEM instead; the caller tears down the partially built superblock on error, matching the other error returns in this function.
Impacted products
Vendor Product Version
Linux Linux Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Version: 1866d779d5d2abae59d304e809600ca3ca8d0071
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/fuse/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "4844aeb0de5fb0de4f7c9aaf2bf05cb8cffe60d5",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            },
            {
              "lessThan": "17120c5bfb16808509ea18d7fab6027802d93eba",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            },
            {
              "lessThan": "e0b7f2922f6bd4c23cbddb7d1fc2bada570d27d1",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            },
            {
              "lessThan": "a5129155ca9fba40d77ff19ffead8244e88d6f9c",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            },
            {
              "lessThan": "509f4a09bae7f03c87f67f053648874a5e177867",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            },
            {
              "lessThan": "928f659a3e3650978a5b4829cc982324f72b474b",
              "status": "affected",
              "version": "1866d779d5d2abae59d304e809600ca3ca8d0071",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/fuse/inode.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.10"
            },
            {
              "lessThan": "5.10",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.191",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.110",
              "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",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.191",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.110",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.52",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.6",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "5.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfuse: check for NULL root inode in fuse_fill_super_submount\n\nfuse_iget() can return NULL when its inode allocation fails, but\nfuse_fill_super_submount() passed the result straight to get_fuse_inode()\nand decremented fi-\u003enlookup without checking it:\n\n        root = fuse_iget(sb, parent_fi-\u003enodeid, ...);\n        fi = get_fuse_inode(root);\n        fi-\u003enlookup--;\n\nInside fuse_iget() the inode allocation can fail and return NULL.  The\nsubmount root takes the iget5_locked() path, whose alloc_inode() can fail\nunder memory pressure (the auto-submount branch can fail the same way in\nnew_inode() or fuse_alloc_submount_lookup()):\n\n        inode = iget5_locked(sb, nodeid, fuse_inode_eq, fuse_inode_set,\n                             \u0026nodeid);\n        if (!inode)\n                return NULL;\n\nA NULL root makes get_fuse_inode() a container_of() on NULL and the\nnlookup decrement a write to a bogus address, oopsing the mount.  With\nCONFIG_KASAN the following null pointer dereference is reported when the\nroot inode allocation of an auto-submount fails (e.g. under memory\npressure):\n\n==================================================================\nBUG: KASAN: null-ptr-deref in fuse_get_tree_submount+0x656/0x8b0\nRead of size 8 at addr 00000000000002b0 by task ls/942\nCPU: 0 PID: 942 Comm: ls Tainted: G W 6.6 #15\nCall Trace:\n \u003cTASK\u003e\n fuse_get_tree_submount+0x656/0x8b0\n vfs_get_tree+0x48/0x140\n fc_mount+0x13/0x50\n fuse_dentry_automount+0x7a/0xb0\n __traverse_mounts+0xca/0x330\n step_into+0x339/0xac0\n path_lookupat+0xc5/0x2f0\n filename_lookup+0x163/0x2a0\n vfs_statx+0xd5/0x200\n do_statx+0x83/0xd0\n __x64_sys_statx+0xa0/0xc0\n do_syscall_64+0x37/0x90\n entry_SYSCALL_64_after_hwframe+0x78/0xe2\n \u003c/TASK\u003e\n==================================================================\n\nReturn -ENOMEM instead; the caller tears down the partially built\nsuperblock on error, matching the other error returns in this\nfunction."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-30T12:34:20.640Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4844aeb0de5fb0de4f7c9aaf2bf05cb8cffe60d5"
        },
        {
          "url": "https://git.kernel.org/stable/c/17120c5bfb16808509ea18d7fab6027802d93eba"
        },
        {
          "url": "https://git.kernel.org/stable/c/e0b7f2922f6bd4c23cbddb7d1fc2bada570d27d1"
        },
        {
          "url": "https://git.kernel.org/stable/c/a5129155ca9fba40d77ff19ffead8244e88d6f9c"
        },
        {
          "url": "https://git.kernel.org/stable/c/509f4a09bae7f03c87f67f053648874a5e177867"
        },
        {
          "url": "https://git.kernel.org/stable/c/928f659a3e3650978a5b4829cc982324f72b474b"
        }
      ],
      "title": "fuse: check for NULL root inode in fuse_fill_super_submount",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-90139",
    "datePublished": "2026-09-17T16:06:37.179Z",
    "dateReserved": "2026-09-11T19:38:34.789Z",
    "dateUpdated": "2026-10-30T12:34:20.640Z",
    "state": "PUBLISHED"
  },
  "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…