Unscored severity · published Oct 28, 2026
CVE-2026-99179
watch_queue: Fix note pool publication race in watch_queue_set_size()
New
–
CVSS
–
EPSS
No
On KEV
Description
In the Linux kernel, the following vulnerability has been resolved:
watch_queue: Fix note pool publication race in watch_queue_set_size()
There is a race between watch_queue_set_size() and post_one_notification().
watch_queue_set_size() publishes wqueue->notes, notes_bitmap, nr_pages and
nr_notes with plain stores, and post_one_notification() reads them with
plain loads under a different lock, so nothing orders the four stores
against the poster's loads: depending on the build, notes can be stored
last (gcc 14 on x86-64 does this). Since keyctl_watch_key() lets a watch
attach to a queue before it is sized, post_one_notification() can already
be running on another CPU at that moment: it reads nr_notes > 0, passes
its bounds check, and then reads notes while it is still NULL,
dereferencing notes[0].
An unprivileged user triggers this reliably by watching one of its own
keys through a notification pipe and racing ioctl(IOC_WATCH_QUEUE_SET_SIZE)
on that pipe against keyctl(KEYCTL_SETPERM) on the key from another CPU,
triggering:
BUG: kernel NULL pointer dereference, address: 0000000000000000
RIP: 0010:post_one_notification.isra.0+0xa2/0x1e0
Call Trace:
__post_watch_notification+0x148/0x180
keyctl_setperm_key+0x119/0x130
do_syscall_64+0x108/0x4c0
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Kernel panic - not syncing: Fatal exception in interrupt
Fix this by publishing nr_notes last with smp_store_release(), and by
reading it once with smp_load_acquire() in post_one_notification() before
the bitmap and the page array are touched. A poster that observes a
non-zero nr_notes then also observes the pool behind it; one that observes
zero drops the notification as before.
Exploitation
Is it being used?
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
LI
Linux · Linux
c73be61cede5882f9605a852414db559c0ebedfd before 811fb6d0b07605e8e8d93bde8748be4b3028809a; c73be61cede5882f9605a852414db559c0ebedfd before 9e73a6754457ffed8399b835552013b9363e51d1; c73be61cede5882f9605a852414db559c0ebedfd before 5e531d62f1f8834faf7a4eed0d41105cf6570a8f; 5.8 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-99179
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-99179
git.kernel.org
https://git.kernel.org/stable/c/811fb6d0b07605e8e8d93bde8748be4b3028809a
git.kernel.org
https://git.kernel.org/stable/c/9e73a6754457ffed8399b835552013b9363e51d1
git.kernel.org
https://git.kernel.org/stable/c/5e531d62f1f8834faf7a4eed0d41105cf6570a8f
More from Linux
9.8
CVE-2025-39682
tls: fix handling of zero-length records on the rx_list
8.8
CVE-2026-53266
netfilter: bridge: make ebt_snat ARP rewrite writable
7.8
CVE-2026-53362
ipv6: account for fraggap on the paged allocation path
7.8
CVE-2026-46300
net: skbuff: preserve shared-frag marker during coalescing
7.8
CVE-2026-31431
crypto: algif_aead - Revert to operating out-of-place
