CVE-2026-97557 (GCVE-0-2026-97557)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:21 – Updated: 2026-09-25 14:41
VLAI
Title
smb: client: avoid leaking refcount in cifs_queue_oplock_break()
Summary
In the Linux kernel, the following vulnerability has been resolved: smb: client: avoid leaking refcount in cifs_queue_oplock_break() cifs_queue_oplock_break() unconditionally takes a reference on the target file before queueing cifs_oplock_break(). Only that work item decreases the reference counter again. If another oplock break arrives while that work is still queued, queue_work() will return false and not queue this second work item. As a result, we will never reach the point to drop the file reference again and are leaking this reference. This can be triggered when interacting with a slow-responding server. As a result, later unmount operations for this file system will fail with BUG: Dentry ... still in use (1) [unmount of cifs cifs] VFS: Busy inodes after unmount of cifs (cifs) kernel BUG at fs/super.c:777! Fix this by only incrementing the reference count if the work has been queued successfully. Taking it after queue_work() is safe because all three callers hold tcon->open_file_lock across the call and _cifsFileInfo_put() decrements under that same lock, so a worker that starts the handler in the window cannot drop the reference before it has been taken.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: b98749cac4a695f084a5ff076f4510b23e353ecd , < af0193bbf1ac8c0f67f972998b0cc629d6116cf6 (git)
Affected: b98749cac4a695f084a5ff076f4510b23e353ecd , < 2ed2c29dd9593637cfa25ac1eb23241b20202778 (git)
Affected: b98749cac4a695f084a5ff076f4510b23e353ecd , < dfe7b750c7e069873a8a57a11c816831a235618a (git)
Affected: b98749cac4a695f084a5ff076f4510b23e353ecd , < 9f2e63f1b2d5fc5b5423424902c091123e220e7e (git)
Affected: 2429fcf06d3cb962693868ab0a927c9038f12a2d (git)
Affected: 1ee4f2d7cdcd4508cc3cbe3b2622d7177b89da12 (git)
Affected: 53fc31a4853e30d6e8f142b824f724da27ff3e40 (git)
Affected: 8092ecc306d81186a64cda42411121f4d35aaff4 (git)
Affected: ebac4d0adf68f8962bd82fcf483936edd6ec095b (git)
Affected: 3.16.72 , < 3.17 (semver)
Affected: 4.9.171 , < 4.10 (semver)
Affected: 4.14.114 , < 4.15 (semver)
Affected: 4.19.37 , < 4.20 (semver)
Affected: 5.0.10 , < 5.1 (semver)
guessed Create a notification for this product.
Linux Linux Affected: 5.1
Unaffected: 0 , < 5.1 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (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/smb/client/misc.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "af0193bbf1ac8c0f67f972998b0cc629d6116cf6",
              "status": "affected",
              "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
              "versionType": "git"
            },
            {
              "lessThan": "2ed2c29dd9593637cfa25ac1eb23241b20202778",
              "status": "affected",
              "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
              "versionType": "git"
            },
            {
              "lessThan": "dfe7b750c7e069873a8a57a11c816831a235618a",
              "status": "affected",
              "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
              "versionType": "git"
            },
            {
              "lessThan": "9f2e63f1b2d5fc5b5423424902c091123e220e7e",
              "status": "affected",
              "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "2429fcf06d3cb962693868ab0a927c9038f12a2d",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "1ee4f2d7cdcd4508cc3cbe3b2622d7177b89da12",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "53fc31a4853e30d6e8f142b824f724da27ff3e40",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8092ecc306d81186a64cda42411121f4d35aaff4",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "ebac4d0adf68f8962bd82fcf483936edd6ec095b",
              "versionType": "git"
            },
            {
              "lessThan": "3.17",
              "status": "affected",
              "version": "3.16.72",
              "versionType": "semver"
            },
            {
              "lessThan": "4.10",
              "status": "affected",
              "version": "4.9.171",
              "versionType": "semver"
            },
            {
              "lessThan": "4.15",
              "status": "affected",
              "version": "4.14.114",
              "versionType": "semver"
            },
            {
              "lessThan": "4.20",
              "status": "affected",
              "version": "4.19.37",
              "versionType": "semver"
            },
            {
              "lessThan": "5.1",
              "status": "affected",
              "version": "5.0.10",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/smb/client/misc.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.1"
            },
            {
              "lessThan": "5.1",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "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"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "5.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "5.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "5.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "5.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "3.16.72",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.9.171",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.14.114",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "4.19.37",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionStartIncluding": "5.0.10",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nsmb: client: avoid leaking refcount in cifs_queue_oplock_break()\n\ncifs_queue_oplock_break() unconditionally takes a reference on the\ntarget file before queueing cifs_oplock_break(). Only that work item\ndecreases the reference counter again.\n\nIf another oplock break arrives while that work is still queued,\nqueue_work() will return false and not queue this second work item. As a\nresult, we will never reach the point to drop the file reference again\nand are leaking this reference. This can be triggered when interacting\nwith a slow-responding server.\n\nAs a result, later unmount operations for this file system will fail with\n\n  BUG: Dentry ... still in use (1) [unmount of cifs cifs]\n  VFS: Busy inodes after unmount of cifs (cifs)\n  kernel BUG at fs/super.c:777!\n\nFix this by only incrementing the reference count if the work has been\nqueued successfully. Taking it after queue_work() is safe because all\nthree callers hold tcon-\u003eopen_file_lock across the call and\n_cifsFileInfo_put() decrements under that same lock, so a worker that\nstarts the handler in the window cannot drop the reference before it has\nbeen taken."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.5,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - Unsolicited SMB2 OPLOCK_BREAK and StructureSize-44 lease-break PDUs (or SMB1 LOCKING_ANDX with LOCKING_ANDX_OPLOCK_RELEASE) arrive on the CIFS client TCP session; after smb2_find_mid()/cifs_find_mid() miss, cifs_demultiplex_thread() calls smb2_is_valid_oplock_break()/smb2_tcon_has_lease()/is_valid_oplock_break(), which invoke the patched cifs_queue_oplock_break() on the FID/lease-matched cifsFileInfo.\nAC:L - A malicious server that issued the PersistentFid/VolatileFid or lease key on CREATE sends a second matching break while cfile-\u003eoplock_break is still pending on cifsoplockd_wq, so queue_work() returns false after the extra cifsFileInfo_get(); two back-to-back unsolicited PDUs are processed on the same demux thread before the worker runs, which the attacker creates.\nPR:N - The attacker is the SMB server (or a MITM on an unsigned session) and holds no account or capability on the client; oplock/lease breaks are unsolicited notifications handled when find_mid() returns NULL, with no client-side session or share-ACL check on that PDU.\nUI:N - On an already-mounted CIFS/SMB3 share the server sends the extra SMB2_OPLOCK_BREAK/lease-break for an open FID it already granted, with no further victim mount or open at attack time; the later umount that hits the busy-dentry BUG is autofs idle expiry, container teardown, or shutdown.\nS:U - The leaked cifsFileInfo ref and the generic_shutdown_super() busy-inode BUG stay inside the client kernel\u0027s VFS/CIFS objects on the same host; this is not a VM escape, IOMMU bypass, or sandbox boundary crossing.\nC:N - The defect only increments cifsFileInfo.count in cifs_queue_oplock_break() when queue_work() fails; the extra ref pins cfile-\u003edentry instead of freeing it, so there is no OOB read, UAF, or kernel data returned to the server or to userspace.\nI:N - cifs_oplock_break() still _cifsFileInfo_put()s once per successfully queued work item, and the leaked get is never a write through a freed object, double-free, or control-flow primitive; count is only incremented.\nA:H - Each leaked get keeps the dentry from cifs_new_fileinfo()\u0027s dget() alive, so later unmount hits umount_check()\u0027s \"Dentry still in use\" WARN and generic_shutdown_super()\u0027s CHECK_DATA_CORRUPTION(\"VFS: Busy inodes after unmount of cifs\"), which BUG()s under CONFIG_BUG_ON_DATA_CORRUPTION as the fix commit reports at fs/super.c."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T14:41:13.953Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/af0193bbf1ac8c0f67f972998b0cc629d6116cf6"
        },
        {
          "url": "https://git.kernel.org/stable/c/2ed2c29dd9593637cfa25ac1eb23241b20202778"
        },
        {
          "url": "https://git.kernel.org/stable/c/dfe7b750c7e069873a8a57a11c816831a235618a"
        },
        {
          "url": "https://git.kernel.org/stable/c/9f2e63f1b2d5fc5b5423424902c091123e220e7e"
        }
      ],
      "title": "smb: client: avoid leaking refcount in cifs_queue_oplock_break()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97557",
    "datePublished": "2026-09-25T10:21:47.680Z",
    "dateReserved": "2026-09-24T16:01:01.155Z",
    "dateUpdated": "2026-09-25T14:41:13.953Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97557",
      "date": "2026-09-28",
      "epss": "0.00603",
      "percentile": "0.46741"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-28T01:35:13.000Z",
      "cve": "CVE-2026-97557",
      "id": "msrc_CVE-2026-97557",
      "initial_release_date": "2026-09-28T01:35:13.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "smb: client: avoid leaking refcount in cifs_queue_oplock_break()",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97557.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "fs/smb/client/misc.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "af0193bbf1ac8c0f67f972998b0cc629d6116cf6",
                    "status": "affected",
                    "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "2ed2c29dd9593637cfa25ac1eb23241b20202778",
                    "status": "affected",
                    "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "dfe7b750c7e069873a8a57a11c816831a235618a",
                    "status": "affected",
                    "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "9f2e63f1b2d5fc5b5423424902c091123e220e7e",
                    "status": "affected",
                    "version": "b98749cac4a695f084a5ff076f4510b23e353ecd",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "2429fcf06d3cb962693868ab0a927c9038f12a2d",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "1ee4f2d7cdcd4508cc3cbe3b2622d7177b89da12",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "53fc31a4853e30d6e8f142b824f724da27ff3e40",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "8092ecc306d81186a64cda42411121f4d35aaff4",
                    "versionType": "git"
                  },
                  {
                    "status": "affected",
                    "version": "ebac4d0adf68f8962bd82fcf483936edd6ec095b",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "3.17",
                    "status": "affected",
                    "version": "3.16.72",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "4.10",
                    "status": "affected",
                    "version": "4.9.171",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "4.15",
                    "status": "affected",
                    "version": "4.14.114",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "4.20",
                    "status": "affected",
                    "version": "4.19.37",
                    "versionType": "semver"
                  },
                  {
                    "lessThan": "5.1",
                    "status": "affected",
                    "version": "5.0.10",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "fs/smb/client/misc.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "5.1"
                  },
                  {
                    "lessThan": "5.1",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "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\nsmb: client: avoid leaking refcount in cifs_queue_oplock_break()\n\ncifs_queue_oplock_break() unconditionally takes a reference on the\ntarget file before queueing cifs_oplock_break(). Only that work item\ndecreases the reference counter again.\n\nIf another oplock break arrives while that work is still queued,\nqueue_work() will return false and not queue this second work item. As a\nresult, we will never reach the point to drop the file reference again\nand are leaking this reference. This can be triggered when interacting\nwith a slow-responding server.\n\nAs a result, later unmount operations for this file system will fail with\n\n  BUG: Dentry ... still in use (1) [unmount of cifs cifs]\n  VFS: Busy inodes after unmount of cifs (cifs)\n  kernel BUG at fs/super.c:777!\n\nFix this by only incrementing the reference count if the work has been\nqueued successfully. Taking it after queue_work() is safe because all\nthree callers hold tcon-\u003eopen_file_lock across the call and\n_cifsFileInfo_put() decrements under that same lock, so a worker that\nstarts the handler in the window cannot drop the reference before it has\nbeen taken."
          }
        ],
        "id": "CVE-2026-97557",
        "lastModified": "2026-09-25T15:17:58.933",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "HIGH",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "NONE",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 3.9,
              "impactScore": 3.6,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-09-25T11:17:06.193",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/2ed2c29dd9593637cfa25ac1eb23241b20202778"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/9f2e63f1b2d5fc5b5423424902c091123e220e7e"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/af0193bbf1ac8c0f67f972998b0cc629d6116cf6"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/dfe7b750c7e069873a8a57a11c816831a235618a"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    }
  }
}



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…

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…