In the Linux kernel, the following vulnerability has been resolved:
powerpc/smp: do not decrement idle task preempt count in CPU offline
With PREEMPT_COUNT=y, when a CPU is offlined and then onlined again, we get:
BUG: scheduling while atomic: swapper/1/0/0x00000000 no locks held by swapper/1/0. CPU: 1 PID: 0 Comm: swapper/1 Not tainted 5.15.0-rc2+ #100 Call Trace: dump_stack_lvl+0xac/0x108 __schedule_bug+0xac/0xe0 __schedule+0xcf8/0x10d0 schedule_idle+0x3c/0x70 do_idle+0x2d8/0x4a0 cpu_startup_entry+0x38/0x40 start_secondary+0x2ec/0x3a0 start_secondary_prolog+0x10/0x14
This is because powerpc's arch_cpu_idle_dead() decrements the idle task's preempt count, for reasons explained in commit a7c2bb8279d2 ("powerpc: Re-enable preemption before cpu_die()"), specifically "start_secondary() expects a preempt_count() of 0."
However, since commit 2c669ef6979c ("powerpc/preempt: Don't touch the idle task's preempt_count during hotplug") and commit f1a0a376ca0c ("sched/core: Initialize the idle task with preemption disabled"), that justification no longer holds.
The idle task isn't supposed to re-enable preemption, so remove the vestigial preempt_enable() from the CPU offline path.
Tested with pseries and powernv in qemu, and pseries on PowerVM.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 30, 2024 | May 22, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernelUpgrade kernel-rt | Dec 5, 2024 | May 22, 2024 |
| Suse | — | Upgrade dtb-xilinxUpgrade dtb-nvidiaUpgrade kernel-rtUpgrade kselftests-kmp-64kbUpgrade gfs2-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-default-vdsoUpgrade kernel-debug-vdsoUpgrade kernel-64kb-develUpgrade kernel-source-azureUpgrade dtb-allwinnerUpgrade dtb-caviumUpgrade gfs2-kmp-rtUpgrade kernel-kvmsmall-develUpgrade kernel-rt-livepatchUpgrade kernel-sourceUpgrade dtb-alteraUpgrade ocfs2-kmp-defaultUpgrade kernel-kvmsmallUpgrade dtb-lgUpgrade reiserfs-kmp-azureUpgrade kernel-source-vanillaUpgrade kernel-syms-azureUpgrade cluster-md-kmp-azureUpgrade kernel-azure-livepatch-develUpgrade kernel-azure-develUpgrade kernel-default-optionalUpgrade kernel-azure-optionalUpgrade dtb-rockchipUpgrade cluster-md-kmp-rtUpgrade dtb-armUpgrade dtb-mediatekUpgrade kernel-devel-azureUpgrade dtb-qcomUpgrade ocfs2-kmp-rtUpgrade dlm-kmp-64kbUpgrade kernel-default-base-rebuildUpgrade kernel-devel-rtUpgrade dtb-exynosUpgrade kernel-obs-buildUpgrade kernel-develUpgrade kernel-rt-develUpgrade kernel-zfcpdumpUpgrade kselftests-kmp-rtUpgrade kernel-64kb-extraUpgrade kernel-defaultUpgrade kernel-default-livepatch-develUpgrade dtb-renesasUpgrade kernel-64kb-optionalUpgrade kernel-rt-livepatch-develUpgrade kernel-rt-optionalUpgrade dtb-broadcomUpgrade kernel-64kbUpgrade kernel-rt_debug-develUpgrade kselftests-kmp-azureUpgrade dtb-sprdUpgrade kernel-rt-vdsoUpgrade dtb-appleUpgrade kernel-docsUpgrade kernel-kvmsmall-vdsoUpgrade dtb-amazonUpgrade kernel-default-baseUpgrade kernel-debug-develUpgrade ocfs2-kmp-azureUpgrade kernel-symsUpgrade kernel-azureUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-debug-livepatch-develUpgrade dtb-amdUpgrade kernel-kvmsmall-livepatch-develUpgrade dlm-kmp-defaultUpgrade reiserfs-kmp-defaultUpgrade kernel-macrosUpgrade kernel-64kb-livepatch-develUpgrade kernel-azure-extraUpgrade gfs2-kmp-64kbUpgrade kernel-debugUpgrade kselftests-kmp-defaultUpgrade dtb-amlogicUpgrade dtb-socionextUpgrade kernel-default-livepatchUpgrade dtb-freescaleUpgrade dtb-marvellUpgrade kernel-default-extraUpgrade dtb-apmUpgrade dlm-kmp-azureUpgrade kernel-azure-vdsoUpgrade reiserfs-kmp-64kbUpgrade cluster-md-kmp-64kbUpgrade kernel-obs-qaUpgrade dtb-hisiliconUpgrade kernel-default-develUpgrade kernel-docs-htmlUpgrade kernel-syms-rtUpgrade gfs2-kmp-defaultUpgrade ocfs2-kmp-64kbUpgrade cluster-md-kmp-defaultUpgrade dlm-kmp-rtUpgrade kernel-rt_debugUpgrade kernel-rt_debug-vdsoUpgrade kernel-source-rtUpgrade reiserfs-kmp-rt | Aug 9, 2024 | May 22, 2024 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Jan 20, 2025 | May 22, 2024 |
Prioritise with Active Threat Intelligence
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