{"api_version":"1","generated_at":"2026-09-05T20:56:35+00:00","cve":"CVE-2026-80768","urls":{"html":"https://cve.report/CVE-2026-80768","api":"https://cve.report/api/cve/CVE-2026-80768.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-80768","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-80768"},"summary":{"title":"HID: ft260: fix stack-use-after-return write in I2C read race","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nHID: ft260: fix stack-use-after-return write in I2C read race\n\nft260_i2c_read() points dev->read_buf at a caller-supplied buffer\n(often an on-stack variable), arms a completion and waits up to five\nseconds for the device to return the data. The HID input callback\nft260_raw_event() runs in the input/IRQ path, independent of the\ndev->lock mutex held by the read path, and copies the device-supplied\npayload into dev->read_buf after a plain NULL check.\n\nThese two paths share read_buf, read_idx and read_len with no\nserialization. If the device delays its response until the read\ntimes out, ft260_i2c_read() resets the controller, clears read_buf\nand returns, unwinding the stack frame the buffer lived in. A\nresponse that arrives at that moment lets ft260_raw_event() pass the\nNULL check and then memcpy() the device-controlled payload into the\nnow-freed stack location, a bounded but attacker-influenced\nstack-use-after-return write triggerable by malicious or\nmalfunctioning hardware.\n\nAdd a dedicated spinlock that serializes every access to read_buf,\nread_idx and read_len. ft260_raw_event() now holds it across the\nNULL check, the memcpy and the index update, while the read path\ntakes it when arming and when clearing the buffer, so the teardown\ncan no longer slip between the check and the copy.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-09-04 16:18:02","updated_at":"2026-09-04 16:18:02"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/2b907001e8a83cdb71e899fd3d77ab51e2c03f10","name":"https://git.kernel.org/stable/c/2b907001e8a83cdb71e899fd3d77ab51e2c03f10","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/90e9298f2e4336a0e1ca7eeb173403df78056164","name":"https://git.kernel.org/stable/c/90e9298f2e4336a0e1ca7eeb173403df78056164","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/bf3e39df3a397fd82967a31d17c4e02c7feab221","name":"https://git.kernel.org/stable/c/bf3e39df3a397fd82967a31d17c4e02c7feab221","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/77832d8f1c81d9f84b6b54807fb278586001d754","name":"https://git.kernel.org/stable/c/77832d8f1c81d9f84b6b54807fb278586001d754","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/460514d46e8892189fc933a1b4433811cfa5c309","name":"https://git.kernel.org/stable/c/460514d46e8892189fc933a1b4433811cfa5c309","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/a8e1f970f9040294cfd9100c681c32af6c2aeec0","name":"https://git.kernel.org/stable/c/a8e1f970f9040294cfd9100c681c32af6c2aeec0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d7ffbdc076675c84128d5b904e4d5167fe9f3a7f","name":"https://git.kernel.org/stable/c/d7ffbdc076675c84128d5b904e4d5167fe9f3a7f","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3","name":"https://git.kernel.org/stable/c/5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-80768","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-80768","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 2b907001e8a83cdb71e899fd3d77ab51e2c03f10 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 90e9298f2e4336a0e1ca7eeb173403df78056164 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 460514d46e8892189fc933a1b4433811cfa5c309 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 a8e1f970f9040294cfd9100c681c32af6c2aeec0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 d7ffbdc076675c84128d5b904e4d5167fe9f3a7f git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 77832d8f1c81d9f84b6b54807fb278586001d754 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 6a82582d9fa438045191074856f47165334f2777 bf3e39df3a397fd82967a31d17c4e02c7feab221 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.13","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.13 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.220 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.187 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.156 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.108 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.49 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.11 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2.1 7.2.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.3-rc1 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/hid/hid-ft260.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"2b907001e8a83cdb71e899fd3d77ab51e2c03f10","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"90e9298f2e4336a0e1ca7eeb173403df78056164","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"460514d46e8892189fc933a1b4433811cfa5c309","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"a8e1f970f9040294cfd9100c681c32af6c2aeec0","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"d7ffbdc076675c84128d5b904e4d5167fe9f3a7f","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"77832d8f1c81d9f84b6b54807fb278586001d754","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"},{"lessThan":"bf3e39df3a397fd82967a31d17c4e02c7feab221","status":"affected","version":"6a82582d9fa438045191074856f47165334f2777","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/hid/hid-ft260.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.13"},{"lessThan":"5.13","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.220","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.187","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.156","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.108","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.49","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.11","versionType":"semver"},{"lessThanOrEqual":"7.2.*","status":"unaffected","version":"7.2.1","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.3-rc1","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.220","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.187","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.156","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.108","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.49","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.11","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2.1","versionStartIncluding":"5.13","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.3-rc1","versionStartIncluding":"5.13","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nHID: ft260: fix stack-use-after-return write in I2C read race\n\nft260_i2c_read() points dev->read_buf at a caller-supplied buffer\n(often an on-stack variable), arms a completion and waits up to five\nseconds for the device to return the data. The HID input callback\nft260_raw_event() runs in the input/IRQ path, independent of the\ndev->lock mutex held by the read path, and copies the device-supplied\npayload into dev->read_buf after a plain NULL check.\n\nThese two paths share read_buf, read_idx and read_len with no\nserialization. If the device delays its response until the read\ntimes out, ft260_i2c_read() resets the controller, clears read_buf\nand returns, unwinding the stack frame the buffer lived in. A\nresponse that arrives at that moment lets ft260_raw_event() pass the\nNULL check and then memcpy() the device-controlled payload into the\nnow-freed stack location, a bounded but attacker-influenced\nstack-use-after-return write triggerable by malicious or\nmalfunctioning hardware.\n\nAdd a dedicated spinlock that serializes every access to read_buf,\nread_idx and read_len. ft260_raw_event() now holds it across the\nNULL check, the memcpy and the index update, while the read path\ntakes it when arming and when clearing the buffer, so the teardown\ncan no longer slip between the check and the copy."}],"providerMetadata":{"dateUpdated":"2026-09-04T15:12:40.374Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/2b907001e8a83cdb71e899fd3d77ab51e2c03f10"},{"url":"https://git.kernel.org/stable/c/90e9298f2e4336a0e1ca7eeb173403df78056164"},{"url":"https://git.kernel.org/stable/c/460514d46e8892189fc933a1b4433811cfa5c309"},{"url":"https://git.kernel.org/stable/c/5aa5a1b7cc4b4bec5497ad9ef113fdfe37b232f3"},{"url":"https://git.kernel.org/stable/c/a8e1f970f9040294cfd9100c681c32af6c2aeec0"},{"url":"https://git.kernel.org/stable/c/d7ffbdc076675c84128d5b904e4d5167fe9f3a7f"},{"url":"https://git.kernel.org/stable/c/77832d8f1c81d9f84b6b54807fb278586001d754"},{"url":"https://git.kernel.org/stable/c/bf3e39df3a397fd82967a31d17c4e02c7feab221"}],"title":"HID: ft260: fix stack-use-after-return write in I2C read race","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-80768","datePublished":"2026-09-04T15:12:40.374Z","dateReserved":"2026-08-26T14:34:25.791Z","dateUpdated":"2026-09-04T15:12:40.374Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-04 16:18:02","lastModifiedDate":"2026-09-04 16:18:02","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"80768","Ordinal":"1","Title":"HID: ft260: fix stack-use-after-return write in I2C read race","CVE":"CVE-2026-80768","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"80768","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nHID: ft260: fix stack-use-after-return write in I2C read race\n\nft260_i2c_read() points dev->read_buf at a caller-supplied buffer\n(often an on-stack variable), arms a completion and waits up to five\nseconds for the device to return the data. The HID input callback\nft260_raw_event() runs in the input/IRQ path, independent of the\ndev->lock mutex held by the read path, and copies the device-supplied\npayload into dev->read_buf after a plain NULL check.\n\nThese two paths share read_buf, read_idx and read_len with no\nserialization. If the device delays its response until the read\ntimes out, ft260_i2c_read() resets the controller, clears read_buf\nand returns, unwinding the stack frame the buffer lived in. A\nresponse that arrives at that moment lets ft260_raw_event() pass the\nNULL check and then memcpy() the device-controlled payload into the\nnow-freed stack location, a bounded but attacker-influenced\nstack-use-after-return write triggerable by malicious or\nmalfunctioning hardware.\n\nAdd a dedicated spinlock that serializes every access to read_buf,\nread_idx and read_len. ft260_raw_event() now holds it across the\nNULL check, the memcpy and the index update, while the read path\ntakes it when arming and when clearing the buffer, so the teardown\ncan no longer slip between the check and the copy.","Type":"Description","Title":"HID: ft260: fix stack-use-after-return write in I2C read race"}]}}}