In the Linux kernel, the following vulnerability has been resolved:
aio: fix use-after-free due to missing POLLFREE handling
signalfd_poll() and binder_poll() are special in that they use a waitqueue whose lifetime is the current task, rather than the struct file as is normally the case. This is okay for blocking polls, since a blocking poll occurs within one task; however, non-blocking polls require another solution. This solution is for the queue to be cleared before it is freed, by sending a POLLFREE notification to all waiters.
Unfortunately, only eventpoll handles POLLFREE. A second type of non-blocking poll, aio poll, was added in kernel v4.18, and it doesn't handle POLLFREE. This allows a use-after-free to occur if a signalfd or binder fd is polled with aio poll, and the waitqueue gets freed.
Fix this by making aio poll handle POLLFREE.
A patch by Ramji Jiyani <[email protected]> (https://lore.kernel.org/r/[email protected]) tried to do this by making aio_poll_wake() always complete the request inline if POLLFREE is seen. However, that solution had two bugs. First, it introduced a deadlock, as it unconditionally locked the aio context while holding the waitqueue lock, which inverts the normal locking order. Second, it didn't consider that POLLFREE notifications are missed while the request has been temporarily de-queued.
The second problem was solved by my previous patch. This patch then properly fixes the use-after-free by handling POLLFREE in a deadlock-free way. It does this by taking advantage of the fact that freeing of the waitqueue is RCU-delayed, similar to what eventpoll does.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade python-perfUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-develUpgrade kernelUpgrade kernel-livepatch-5.10.93-87.444Upgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade bpftool-debuginfoUpgrade kernel-debuginfo-common-aarch64Upgrade kernel-tools-develUpgrade python-perf-debuginfoUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-headersUpgrade perf | Feb 3, 2025 | May 24, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | May 24, 2024 |
| Redhat_linux | — | Upgrade kernelNo solution existsUpgrade kernel-rt | Dec 5, 2024 | May 24, 2024 |
| Suse | — | Upgrade dtb-appleUpgrade kernel-defaultUpgrade kernel-rt-livepatch-develUpgrade kernel-obs-qaUpgrade kernel-64kb-optionalUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-syms-rtUpgrade kernel-rt-extraUpgrade kernel-default-livepatchUpgrade dtb-broadcomUpgrade kernel-rt_debug-vdsoUpgrade kernel-docs-htmlUpgrade kselftests-kmp-rtUpgrade dtb-amlogicUpgrade kernel-default-extraUpgrade kernel-rt-optionalUpgrade dlm-kmp-azureUpgrade kselftests-kmp-azureUpgrade dlm-kmp-rtUpgrade kselftests-kmp-defaultUpgrade kernel-zfcpdumpUpgrade kernel-debug-vdsoUpgrade kernel-azure-extraUpgrade cluster-md-kmp-defaultUpgrade kernel-default-baseUpgrade reiserfs-kmp-rtUpgrade kernel-debug-develUpgrade kernel-kvmsmallUpgrade ocfs2-kmp-rtUpgrade kernel-default-develUpgrade kernel-azureUpgrade dlm-kmp-defaultUpgrade dtb-amdUpgrade dtb-amazonUpgrade kernel-kvmsmall-vdsoUpgrade dtb-apmUpgrade reiserfs-kmp-64kbUpgrade kernel-azure-livepatch-develUpgrade kernel-source-rtUpgrade kernel-azure-vdsoUpgrade dtb-freescaleUpgrade kernel-rt-vdsoUpgrade kernel-rt_debugUpgrade gfs2-kmp-rtUpgrade kernel-docsUpgrade kernel-obs-buildUpgrade kernel-64kbUpgrade kernel-azure-develUpgrade dtb-marvellUpgrade kernel-debug-livepatch-develUpgrade kernel-macrosUpgrade kernel-default-livepatch-develUpgrade dtb-socionextUpgrade ocfs2-kmp-64kbUpgrade kernel-symsUpgrade ocfs2-kmp-azureUpgrade gfs2-kmp-defaultUpgrade kernel-64kb-livepatch-develUpgrade dtb-nvidiaUpgrade dtb-mediatekUpgrade gfs2-kmp-azureUpgrade dtb-lgUpgrade reiserfs-kmp-defaultUpgrade dtb-caviumUpgrade kernel-preemptUpgrade kernel-rtUpgrade kernel-azure-optionalUpgrade kernel-syms-azureUpgrade kselftests-kmp-64kbUpgrade kernel-64kb-extraUpgrade kernel-source-azureUpgrade dtb-qcomUpgrade cluster-md-kmp-rtUpgrade kernel-default-vdsoUpgrade dtb-sprdUpgrade gfs2-kmp-64kbUpgrade dtb-exynosUpgrade dtb-armUpgrade cluster-md-kmp-azureUpgrade kernel-develUpgrade kernel-default-optionalUpgrade kernel-64kb-develUpgrade dtb-renesasUpgrade dtb-hisiliconUpgrade ocfs2-kmp-defaultUpgrade kernel-sourceUpgrade kernel-rt-livepatchUpgrade dlm-kmp-64kbUpgrade kernel-source-vanillaUpgrade reiserfs-kmp-azureUpgrade dtb-alteraUpgrade dtb-rockchipUpgrade dtb-allwinnerUpgrade kernel-devel-azureUpgrade kernel-rt-develUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-preempt-develUpgrade kernel-debugUpgrade kernel-rt_debug-develUpgrade kernel-default-base-rebuildUpgrade dtb-xilinxUpgrade cluster-md-kmp-64kbUpgrade kernel-kvmsmall-develUpgrade kernel-devel-rt | Aug 9, 2024 | May 24, 2024 |
| Ubuntu | — | Upgrade linux-kvmUpgrade linux-oracleUpgrade linux-gcp-fipsUpgrade linux-hwe-5.4Upgrade linux-gcp-5.4Upgrade linux-fipsUpgrade linux-azure-fipsUpgrade linux-azureUpgrade linux-aws-fipsUpgrade linux-azure-5.4Upgrade linux-ibmUpgrade linux-gcpUpgrade linux-gkeopUpgrade linux-raspiUpgrade linuxUpgrade linux-awsUpgrade linux-raspi-5.4Upgrade linux-bluefieldUpgrade linux-ibm-5.4Upgrade linux-oracle-5.4Upgrade linux-aws-5.4 | Nov 19, 2024 | May 24, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 24, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub