In the Linux kernel, the following vulnerability has been resolved:
drm/drm_file: Fix pid refcounting race
<[email protected]>, Maxime Ripard <[email protected]>, Thomas Zimmermann <[email protected]>
filp->pid is supposed to be a refcounted pointer; however, before this patch, drm_file_update_pid() only increments the refcount of a struct pid after storing a pointer to it in filp->pid and dropping the dev->filelist_mutex, making the following race possible:
process A process B ========= ========= begin drm_file_update_pid mutex_lock(&dev->filelist_mutex) rcu_replace_pointer(filp->pid, <pid B>, 1) mutex_unlock(&dev->filelist_mutex) begin drm_file_update_pid mutex_lock(&dev->filelist_mutex) rcu_replace_pointer(filp->pid, <pid A>, 1) mutex_unlock(&dev->filelist_mutex) get_pid(<pid A>) synchronize_rcu() put_pid(<pid B>) *** pid B reaches refcount 0 and is freed here *** get_pid(<pid B>) *** UAF *** synchronize_rcu() put_pid(<pid A>)
As far as I know, this race can only occur with CONFIG_PREEMPT_RCU=y because it requires RCU to detect a quiescent state in code that is not explicitly calling into the scheduler.
This race leads to use-after-free of a "struct pid". It is probably somewhat hard to hit because process A has to pass through a synchronize_rcu() operation while process B is between mutex_unlock() and get_pid().
Fix it by ensuring that by the time a pointer to the current task's pid is stored in the file, an extra reference to the pid has been taken.
This fix also removes the condition for synchronize_rcu(); I think that optimization is unnecessary complexity, since in that case we would usually have bailed out on the lockless check above.
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Dec 5, 2024 | Jul 6, 2024 |
| Suse | — | Upgrade kernel-source-azureUpgrade kernel-azure-livepatch-develUpgrade kernel-rt-extraUpgrade kernel-obs-buildUpgrade cluster-md-kmp-rtUpgrade kernel-default-extraUpgrade kernel-kvmsmallUpgrade kernel-zfcpdumpUpgrade dtb-lgUpgrade reiserfs-kmp-azureUpgrade dtb-alteraUpgrade dtb-apmUpgrade dtb-qcomUpgrade kernel-rtUpgrade kernel-source-vanillaUpgrade ocfs2-kmp-defaultUpgrade kernel-develUpgrade kernel-devel-azureUpgrade dtb-caviumUpgrade dtb-rockchipUpgrade dtb-mediatekUpgrade gfs2-kmp-64kbUpgrade cluster-md-kmp-azureUpgrade kernel-azure-develUpgrade kernel-devel-rtUpgrade kernel-macrosUpgrade kernel-rt-develUpgrade kernel-syms-azureUpgrade ocfs2-kmp-rtUpgrade kernel-default-vdsoUpgrade kernel-obs-qaUpgrade kernel-default-base-rebuildUpgrade kernel-kvmsmall-develUpgrade gfs2-kmp-azureUpgrade kernel-rt-vdsoUpgrade dtb-exynosUpgrade dtb-xilinxUpgrade kselftests-kmp-64kbUpgrade kernel-64kbUpgrade kernel-default-optionalUpgrade gfs2-kmp-rtUpgrade dlm-kmp-64kbUpgrade kernel-azure-optionalUpgrade kernel-rt_debug-develUpgrade dtb-amlogicUpgrade dtb-allwinnerUpgrade dtb-armUpgrade kernel-sourceUpgrade kernel-azureUpgrade kernel-64kb-develUpgrade dlm-kmp-rtUpgrade dlm-kmp-defaultUpgrade kernel-kvmsmall-livepatch-develUpgrade ocfs2-kmp-azureUpgrade dtb-socionextUpgrade cluster-md-kmp-64kbUpgrade kernel-default-develUpgrade kernel-debug-vdsoUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-extraUpgrade kernel-azure-vdsoUpgrade kselftests-kmp-defaultUpgrade kselftests-kmp-azureUpgrade kernel-docsUpgrade kernel-default-livepatchUpgrade kernel-defaultUpgrade dtb-broadcomUpgrade dtb-appleUpgrade ocfs2-kmp-64kbUpgrade dtb-hisiliconUpgrade kernel-rt_debugUpgrade gfs2-kmp-defaultUpgrade reiserfs-kmp-64kbUpgrade kernel-symsUpgrade kernel-rt-optionalUpgrade kernel-debug-develUpgrade kernel-syms-rtUpgrade kernel-source-rtUpgrade kernel-debugUpgrade kernel-64kb-livepatch-develUpgrade kselftests-kmp-rtUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-marvellUpgrade dtb-amdUpgrade kernel-kvmsmall-vdsoUpgrade dlm-kmp-azureUpgrade kernel-64kb-optionalUpgrade kernel-rt_debug-vdsoUpgrade dtb-renesasUpgrade kernel-rt-livepatch-develUpgrade dtb-freescaleUpgrade kernel-default-livepatch-develUpgrade kernel-64kb-extraUpgrade dtb-sprdUpgrade dtb-nvidiaUpgrade dtb-amazonUpgrade cluster-md-kmp-defaultUpgrade reiserfs-kmp-rtUpgrade reiserfs-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-docs-html | Dec 5, 2025 | Sep 10, 2024 |
| Ubuntu | — | Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-24.04Upgrade linux-image-gcpUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-oem-22.04cUpgrade linux-image-6.8.0-1016-azureUpgrade linux-image-oem-22.04aUpgrade linux-image-raspiUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidiaUpgrade linux-image-lowlatency-hwe-24.04Upgrade linux-image-6.8.0-1016-oemUpgrade linux-image-6.8.0-1015-oracle-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-kvmUpgrade linux-image-gkeop-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-48-lowlatencyUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-48-generic-64kUpgrade linux-image-ibmUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1017-nvidia-64kUpgrade linux-image-awsUpgrade linux-image-6.8.0-1017-azure-fdeUpgrade linux-image-6.8.0-1016-azure-fdeUpgrade linux-image-6.8.0-1018-awsUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-6.8.0-1002-gkeopUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1017-azureUpgrade linux-image-6.8.0-1014-ibmUpgrade linux-image-oracle-64kUpgrade linux-image-generic-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-azureUpgrade linux-image-oem-24.04aUpgrade linux-image-oem-22.04bUpgrade linux-image-6.8.0-1017-nvidiaUpgrade linux-image-6.8.0-1014-raspiUpgrade linux-image-lowlatency-64kUpgrade linux-image-oem-22.04dUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gkeUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-6.8.0-1017-gcpUpgrade linux-image-gkeopUpgrade linux-image-6.8.0-1015-oracleUpgrade linux-image-6.8.0-48-lowlatency-64kUpgrade linux-image-6.8.0-1017-nvidia-lowlatency-64kUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-1016-gcpUpgrade linux-image-6.8.0-1013-gkeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-nvidia-64k-6.8Upgrade linux-image-6.8.0-1017-nvidia-lowlatencyUpgrade linux-image-virtualUpgrade linux-image-oracleUpgrade linux-image-6.8.0-48-genericUpgrade linux-image-genericUpgrade linux-image-lowlatency-64k-hwe-22.04 | Nov 4, 2024 | Jul 6, 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