{"dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": {"cveId": "CVE-2026-97557", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-09-24T16:01:01.155Z", "datePublished": "2026-09-25T10:21:47.680Z", "dateUpdated": "2026-09-25T14:41:13.953Z"}, "containers": {"cna": {"providerMetadata": {"orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-09-25T14:41:13.953Z"}, "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->open_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": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH"}, "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->oplock_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's 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->dentry 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()'s dget() alive, so later unmount hits umount_check()'s \"Dentry still in use\" WARN and generic_shutdown_super()'s 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."}]}], "affected": [{"product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": ["fs/smb/client/misc.c"], "versions": [{"version": "b98749cac4a695f084a5ff076f4510b23e353ecd", "lessThan": "af0193bbf1ac8c0f67f972998b0cc629d6116cf6", "status": "affected", "versionType": "git"}, {"version": "b98749cac4a695f084a5ff076f4510b23e353ecd", "lessThan": "2ed2c29dd9593637cfa25ac1eb23241b20202778", "status": "affected", "versionType": "git"}, {"version": "b98749cac4a695f084a5ff076f4510b23e353ecd", "lessThan": "dfe7b750c7e069873a8a57a11c816831a235618a", "status": "affected", "versionType": "git"}, {"version": "b98749cac4a695f084a5ff076f4510b23e353ecd", "lessThan": "9f2e63f1b2d5fc5b5423424902c091123e220e7e", "status": "affected", "versionType": "git"}, {"version": "2429fcf06d3cb962693868ab0a927c9038f12a2d", "status": "affected", "versionType": "git"}, {"version": "1ee4f2d7cdcd4508cc3cbe3b2622d7177b89da12", "status": "affected", "versionType": "git"}, {"version": "53fc31a4853e30d6e8f142b824f724da27ff3e40", "status": "affected", "versionType": "git"}, {"version": "8092ecc306d81186a64cda42411121f4d35aaff4", "status": "affected", "versionType": "git"}, {"version": "ebac4d0adf68f8962bd82fcf483936edd6ec095b", "status": "affected", "versionType": "git"}, {"version": "3.16.72", "lessThan": "3.17", "status": "affected", "versionType": "semver"}, {"version": "4.9.171", "lessThan": "4.10", "status": "affected", "versionType": "semver"}, {"version": "4.14.114", "lessThan": "4.15", "status": "affected", "versionType": "semver"}, {"version": "4.19.37", "lessThan": "4.20", "status": "affected", "versionType": "semver"}, {"version": "5.0.10", "lessThan": "5.1", "status": "affected", "versionType": "semver"}]}, {"product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": ["fs/smb/client/misc.c"], "versions": [{"version": "5.1", "status": "affected"}, {"version": "0", "lessThan": "5.1", "status": "unaffected", "versionType": "semver"}, {"version": "6.12.111", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver"}, {"version": "6.18.53", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver"}, {"version": "7.2.7", "lessThanOrEqual": "7.2.*", "status": "unaffected", "versionType": "semver"}, {"version": "7.3-rc3", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix"}]}], "cpeApplicability": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.1", "versionEndExcluding": "6.12.111"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.1", "versionEndExcluding": "6.18.53"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.1", "versionEndExcluding": "7.2.7"}, {"vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.1", "versionEndExcluding": "7.3-rc3"}, {"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"}]}]}], "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"}}}}