CVE-2026-46274: io-wq: check that the predecessor is hashed in io_wq_remove_pending()

Published Jun 8, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

io-wq: check that the predecessor is hashed in iowqremovepending()

iowqremovepending() needs to fix up wq->hashtail[] if the cancelled work was the tail of its hash bucket. When doing this, it checks whether the preceding entry in acct->worklist has the same hash value, but never checks that the predecessor is hashed at all. iogetworkhash() is simply atomicread(&work->flags) >> IOWQHASHSHIFT, and the hash bits are never set for non-hashed work, so it returns 0. Thus, when a hashed bucket-0 work is cancelled while a non-hashed work is its list predecessor, the check spuriously passes and a pointer to the non-hashed iokiocb is stored in wq->hashtail[0].

Because non-hashed work is dequeued via the fast path in iogetnextwork(), which never touches hashtail[], the stale pointer is never cleared. Therefore, after the non-hashed iokiocb completes and is freed back to reqcachep, wq->hashtail[0] is a dangling pointer. The iowq is per-task (tctx->iowq) and survives ring open/close, so the dangling pointer persists for the lifetime of the task; the next hashed bucket-0 enqueue dereferences it in iowqinsertwork() and wqlistaddafter() writes through freed memory.

Add the missing iowqishashed() check so a non-hashed predecessor never inherits a hashtail[] slot.

Affected Software

18 affected componentsFixes available
Linux Linux kernel
Microsoft azl3 kernel 6.6.139.1-1<6.6.141.1-1
6.6.141.1-1
Linux Linux kernel>=5.8.6<5.9
Linux Linux kernel>=5.9.1<6.6.141
Linux Linux kernel>=6.7<6.12.91
Linux Linux kernel>=6.13<6.18.33
Linux Linux kernel>=6.19<7.0.10
Linux Linux kernel=5.9
Linux Linux kernel=5.9-rc3
Linux Linux kernel=5.9-rc4
Linux Linux kernel=5.9-rc5
Linux Linux kernel=5.9-rc6
Linux Linux kernel=5.9-rc7
Linux Linux kernel=5.9-rc8
Linux Linux kernel=7.1-rc1
Linux Linux kernel=7.1-rc2
Linux Linux kernel=7.1-rc3
debian/linux<=6.1.176-1, <=6.1.190-1
6.12.107-16.12.115-27.2.12-17.2.15-1

Event History

Jun 8, 2026
CVE Published
via MITRE·02:30 PM
Data Sourced
via MITRE·02:30 PM
DescriptionSeverity
Data Sourced
via NVD·04:16 PM
RemedyDescriptionSeverityWeaknessAffected Software
Jun 10, 2026
Data Sourced
via Microsoft·08:04 AM
DescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Frequently Asked Questions

1

What is the severity of CVE-2026-46274?

CVE-2026-46274 has a risk rating of 56, indicating a moderate severity level.

2

How do I fix CVE-2026-46274?

To mitigate CVE-2026-46274, update the Linux kernel to the latest patched version provided by your distribution.

3

Which software is affected by CVE-2026-46274?

CVE-2026-46274 affects the Linux kernel, specifically its workqueue implementation.

4

What is the nature of the vulnerability in CVE-2026-46274?

CVE-2026-46274 is due to the lack of a check for whether the predecessor is hashed when removing pending work in the io_wq_remove_pending() function.

5

Is CVE-2026-46274 exploitable?

While it has a moderate severity rating, exploitation details are not provided, but it is advisable to apply relevant patches promptly.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203