{"id":"CVE-2026-80920","state":"PUBLISHED","title":"io_uring: defer eventfd signaling when queued from a wakeup handler","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring: defer eventfd signaling when queued from a wakeup handler\n\nio_req_local_work_add() signals the CQ ring eventfd inline when it is the\none to push the first entry onto ->work_list. For DEFER_TASKRUN rings that\nadd is frequently done from a waitqueue wakeup handler, where an\narbitrary waitqueue lock is held.\n\neventfd_signal_mask() only refuses to recurse when current->in_eventfd\nis set, but that bit is set by eventfd_signal_mask() itself. If the wake\nchain starts somewhere else, signal goes out inline and can feed back\ninto epoll.\n\nAdd IOU_F_TWQ_IN_WAKE, set it on the task_work add done from the three\nwaitqueue callbacks, and use it to force io_eventfd_signal() down the\nexisting call_rcu_hurry() deferral instead of signaling inline.","publishedAt":"2026-09-09T16:13:17.023Z","updatedAt":"2026-10-21T12:47:14.401Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"d0c240f25e654442a72af5ca021a02165ccce638","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"9d984451baf768ecd9e1fdad4637b729fcb2c9d5","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"e22f4494cc9487d326e5e3067f33dea7c1e442b2","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"b6bb334b0e9348887e3e55e1f494b0c3b8fbf59f","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"40b6ccf68731809ceb85c6e9f0f8f2ed61c7aa5a","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"cd305ee3633a45fcf5f3a5d83f99f3cb77d87b6e","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/io_uring_types.h","io_uring/eventfd.c","io_uring/eventfd.h","io_uring/futex.c","io_uring/io_uring.c","io_uring/poll.c","io_uring/tw.c","io_uring/waitid.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.1","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.49","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.11","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2.1","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/io_uring_types.h","io_uring/eventfd.c","io_uring/eventfd.h","io_uring/futex.c","io_uring/io_uring.c","io_uring/poll.c","io_uring/tw.c","io_uring/waitid.c"]}],"references":["https://git.kernel.org/stable/c/d0c240f25e654442a72af5ca021a02165ccce638","https://git.kernel.org/stable/c/9d984451baf768ecd9e1fdad4637b729fcb2c9d5","https://git.kernel.org/stable/c/e22f4494cc9487d326e5e3067f33dea7c1e442b2","https://git.kernel.org/stable/c/b6bb334b0e9348887e3e55e1f494b0c3b8fbf59f","https://git.kernel.org/stable/c/40b6ccf68731809ceb85c6e9f0f8f2ed61c7aa5a","https://git.kernel.org/stable/c/cd305ee3633a45fcf5f3a5d83f99f3cb77d87b6e"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80920.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80920","state":"PUBLISHED","datePublished":"2026-09-09T16:13:17.023Z","dateUpdated":"2026-10-21T12:47:14.401Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.801Z"},"containers":{"cna":{"title":"io_uring: defer eventfd signaling when queued from a wakeup handler","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nio_uring: defer eventfd signaling when queued from a wakeup handler\n\nio_req_local_work_add() signals the CQ ring eventfd inline when it is the\none to push the first entry onto ->work_list. For DEFER_TASKRUN rings that\nadd is frequently done from a waitqueue wakeup handler, where an\narbitrary waitqueue lock is held.\n\neventfd_signal_mask() only refuses to recurse when current->in_eventfd\nis set, but that bit is set by eventfd_signal_mask() itself. If the wake\nchain starts somewhere else, signal goes out inline and can feed back\ninto epoll.\n\nAdd IOU_F_TWQ_IN_WAKE, set it on the task_work add done from the three\nwaitqueue callbacks, and use it to force io_eventfd_signal() down the\nexisting call_rcu_hurry() deferral instead of signaling inline."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"d0c240f25e654442a72af5ca021a02165ccce638","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"9d984451baf768ecd9e1fdad4637b729fcb2c9d5","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"e22f4494cc9487d326e5e3067f33dea7c1e442b2","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"b6bb334b0e9348887e3e55e1f494b0c3b8fbf59f","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"40b6ccf68731809ceb85c6e9f0f8f2ed61c7aa5a","versionType":"git"},{"version":"21a091b970cdbcf3e8ff829234b51be6f9192766","status":"affected","lessThan":"cd305ee3633a45fcf5f3a5d83f99f3cb77d87b6e","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/io_uring_types.h","io_uring/eventfd.c","io_uring/eventfd.h","io_uring/futex.c","io_uring/io_uring.c","io_uring/poll.c","io_uring/tw.c","io_uring/waitid.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.1","versionType":"semver"},{"version":"6.6.160","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.114","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.49","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.11","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2.1","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/linux/io_uring_types.h","io_uring/eventfd.c","io_uring/eventfd.h","io_uring/futex.c","io_uring/io_uring.c","io_uring/poll.c","io_uring/tw.c","io_uring/waitid.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/d0c240f25e654442a72af5ca021a02165ccce638"},{"url":"https://git.kernel.org/stable/c/9d984451baf768ecd9e1fdad4637b729fcb2c9d5"},{"url":"https://git.kernel.org/stable/c/e22f4494cc9487d326e5e3067f33dea7c1e442b2"},{"url":"https://git.kernel.org/stable/c/b6bb334b0e9348887e3e55e1f494b0c3b8fbf59f"},{"url":"https://git.kernel.org/stable/c/40b6ccf68731809ceb85c6e9f0f8f2ed61c7aa5a"},{"url":"https://git.kernel.org/stable/c/cd305ee3633a45fcf5f3a5d83f99f3cb77d87b6e"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-21T12:47:14.401Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"6.6.160"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"6.12.114"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"6.18.49"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"7.1.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"7.2.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.1","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}