{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35793","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-17T12:19:12.339Z","datePublished":"2024-05-17T12:24:56.630Z","dateUpdated":"2026-08-05T11:29:59.377Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:29:59.377Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndebugfs: fix wait/cancellation handling during remove\n\nBen Greear further reports deadlocks during concurrent debugfs\nremove while files are being accessed, even though the code in\nquestion now uses debugfs cancellations. Turns out that despite\nall the review on the locking, we missed completely that the\nlogic is wrong: if the refcount hits zero we can finish (and\nneed not wait for the completion), but if it doesn't we have\nto trigger all the cancellations. As written, we can _never_\nget into the loop triggering the cancellations. Fix this, and\nexplain it better while at it."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - Exploitation requires a local process holding a read()/write() on a mac80211 debugfs file while a concurrent debugfs removal occurs. Although the removal half can be induced remotely by an adjacent WiFi attacker forcing station teardown via deauth, the active file access side is local.\nAC:L - The attacker controls both sides of the race — spawning many reader threads on station/interface debugfs files while deleting the station or interface — and the window between debugfs_file_get() and debugfs_enter_cancellation() is wide because the handler must queue and wait on wiphy work. Ben Greear reproduced the deadlock repeatedly during ordinary testing.\nPR:L - Only debugfs read/write access to mac80211 files is needed, which on Android, embedded, automotive and WiFi-testing platforms is routinely exposed to non-root system services, and the removal half happens on any disconnect without attacker privilege. Scored as low privilege consistent with the analogous debugfs deadlock CVE-2024-35795.\nUI:N - No victim action is required; the attacker's own threads perform both the debugfs access and the station/interface removal that triggers the race.\nS:U - The lost wakeup and resulting use-after-free are confined to kernel memory and kernel-managed locks, with no crossing of a VM, IOMMU, or sandbox security authority.\nC:H - Because __debugfs_file_removed() can return with active_users still non-zero, debugfs_remove_recursive() returns while a handler is still running, and sta_info/sdata are then freed under it — sta_agg_status_do_read() reads freed memory into a user-visible buffer, giving an arbitrary-read-style disclosure primitive.\nI:H - The same premature return lets sta_agg_status_do_write() call ieee80211_start_tx_ba_session() on a freed, sprayable sta_info, dereferencing freed pointers and queuing work — a use-after-free write primitive leveragable for control-flow hijack.\nA:H - The primary reported symptom is an unrecoverable deadlock in which the remover holds the wiphy mutex (and RTNL in the netdev teardown path) forever, wedging the entire networking control plane with unkillable tasks; the use-after-free additionally causes kernel oopses."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/debugfs/inode.c"],"versions":[{"version":"8c88a474357ead632b07c70bf7f119ace8c3b39e","lessThan":"e88b5ae01901c4a655a53158397746334778a57b","status":"affected","versionType":"git"},{"version":"8c88a474357ead632b07c70bf7f119ace8c3b39e","lessThan":"3d08cca5fd0aabb62b7015067ab40913b33da906","status":"affected","versionType":"git"},{"version":"8c88a474357ead632b07c70bf7f119ace8c3b39e","lessThan":"952c3fce297f12c7ff59380adb66b564e2bc9b64","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/debugfs/inode.c"],"versions":[{"version":"6.7","status":"affected"},{"version":"0","lessThan":"6.7","status":"unaffected","versionType":"semver"},{"version":"6.7.12","lessThanOrEqual":"6.7.*","status":"unaffected","versionType":"semver"},{"version":"6.8.3","lessThanOrEqual":"6.8.*","status":"unaffected","versionType":"semver"},{"version":"6.9","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":"6.7","versionEndExcluding":"6.7.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.8.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.7","versionEndExcluding":"6.9"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/e88b5ae01901c4a655a53158397746334778a57b"},{"url":"https://git.kernel.org/stable/c/3d08cca5fd0aabb62b7015067ab40913b33da906"},{"url":"https://git.kernel.org/stable/c/952c3fce297f12c7ff59380adb66b564e2bc9b64"}],"title":"debugfs: fix wait/cancellation handling during remove","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T03:21:47.366Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/e88b5ae01901c4a655a53158397746334778a57b","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/3d08cca5fd0aabb62b7015067ab40913b33da906","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/952c3fce297f12c7ff59380adb66b564e2bc9b64","tags":["x_transferred"]}]},{"metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-35793","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-09-10T15:42:47.871301Z"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-09-11T17:33:22.657Z"}}]}}