In the Linux kernel, the following vulnerability has been resolved:
s390/bpf: Fix bpf_plt pointer arithmetic
Kui-Feng Lee reported a crash on s390x triggered by the dummy_st_ops/dummy_init_ptr_arg test [1]:
[<0000000000000002>] 0x2 [<00000000009d5cde>] bpf_struct_ops_test_run+0x156/0x250 [<000000000033145a>] __sys_bpf+0xa1a/0xd00 [<00000000003319dc>] __s390x_sys_bpf+0x44/0x50 [<0000000000c4382c>] __do_syscall+0x244/0x300 [<0000000000c59a40>] system_call+0x70/0x98
This is caused by GCC moving memcpy() after assignments in bpf_jit_plt(), resulting in NULL pointers being written instead of the return and the target addresses.
Looking at the GCC internals, the reordering is allowed because the alias analysis thinks that the memcpy() destination and the assignments' left-hand-sides are based on different objects: new_plt and bpf_plt_ret/bpf_plt_target respectively, and therefore they cannot alias.
This is in turn due to a violation of the C standard:
When two pointers are subtracted, both shall point to elements of the same array object, or one past the last element of the array object ...
From the C's perspective, bpf_plt_ret and bpf_plt are distinct objects and cannot be subtracted. In the practical terms, doing so confuses the GCC's alias analysis.
The code was written this way in order to let the C side know a few offsets defined in the assembly. While nice, this is by no means necessary. Fix the noncompliance by hardcoding these offsets.
[1] https://lore.kernel.org/bpf/[email protected]/
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 27, 2026 | Jul 27, 2026 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | May 19, 2024 |
| Suse | — | Upgrade kernel-kvmsmall-livepatch-develUpgrade kernel-obs-qaUpgrade kernel-rt-optionalUpgrade kernel-obs-buildUpgrade dlm-kmp-azureUpgrade dtb-marvellUpgrade kernel-64kb-optionalUpgrade kernel-azure-extraUpgrade kernel-macrosUpgrade kernel-rt_debug-livepatch-develUpgrade dtb-broadcomUpgrade kernel-docsUpgrade dtb-sprdUpgrade dtb-renesasUpgrade dtb-apmUpgrade dtb-hisiliconUpgrade dtb-amlogicUpgrade dtb-nvidiaUpgrade dtb-armUpgrade kernel-defaultUpgrade reiserfs-kmp-rtUpgrade dtb-socionextUpgrade kernel-default-baseUpgrade ocfs2-kmp-64kbUpgrade kernel-syms-rtUpgrade kselftests-kmp-rtUpgrade kernel-rt_debugUpgrade kernel-rt_debug-vdsoUpgrade reiserfs-kmp-defaultUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-rtUpgrade cluster-md-kmp-defaultUpgrade kernel-debug-livepatch-develUpgrade kernel-symsUpgrade kselftests-kmp-defaultUpgrade kernel-rt-livepatch-develUpgrade kernel-rt-vdsoUpgrade kernel-source-rtUpgrade kernel-kvmsmall-vdsoUpgrade reiserfs-kmp-64kbUpgrade dtb-amdUpgrade kernel-docs-htmlUpgrade dlm-kmp-defaultUpgrade dtb-appleUpgrade kernel-default-extraUpgrade kernel-default-livepatch-develUpgrade kernel-64kb-extraUpgrade kernel-debugUpgrade kernel-azure-vdsoUpgrade dlm-kmp-rtUpgrade kernel-debug-develUpgrade dtb-mediatekUpgrade reiserfs-kmp-azureUpgrade kernel-devel-rtUpgrade kernel-rt_debug-develUpgrade kernel-azure-optionalUpgrade dtb-rockchipUpgrade dtb-lgUpgrade kernel-sourceUpgrade kernel-rt-develUpgrade kernel-kvmsmallUpgrade kernel-azure-develUpgrade dlm-kmp-64kbUpgrade dtb-allwinnerUpgrade kernel-source-azureUpgrade dtb-caviumUpgrade dtb-qcomUpgrade kernel-rtUpgrade kernel-default-vdsoUpgrade kernel-default-livepatchUpgrade dtb-xilinxUpgrade kernel-syms-azureUpgrade kernel-devel-azureUpgrade cluster-md-kmp-rtUpgrade kernel-debug-vdsoUpgrade kernel-64kb-develUpgrade gfs2-kmp-64kbUpgrade kernel-kvmsmall-develUpgrade kselftests-kmp-azureUpgrade dtb-amazonUpgrade gfs2-kmp-azureUpgrade dtb-freescaleUpgrade gfs2-kmp-rtUpgrade cluster-md-kmp-azureUpgrade kernel-default-base-rebuildUpgrade kernel-develUpgrade kernel-source-vanillaUpgrade gfs2-kmp-defaultUpgrade kernel-64kb-livepatch-develUpgrade ocfs2-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-64kbUpgrade kernel-default-optionalUpgrade kernel-default-develUpgrade kernel-azure-livepatch-develUpgrade kernel-zfcpdumpUpgrade dtb-exynosUpgrade kselftests-kmp-64kbUpgrade ocfs2-kmp-defaultUpgrade kernel-azureUpgrade dtb-altera | Jun 24, 2024 | May 19, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1010-gcpUpgrade linux-image-6.8.0-1009-nvidiaUpgrade linux-image-virtualUpgrade linux-image-generic-64kUpgrade linux-image-ibmUpgrade linux-image-6.8.0-1008-oracleUpgrade linux-image-azureUpgrade linux-image-gcpUpgrade linux-image-6.8.0-1008-oracle-64kUpgrade linux-image-6.8.0-38-genericUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-oracle-64kUpgrade linux-image-intelUpgrade linux-image-6.8.0-1009-nvidia-64kUpgrade linux-image-nvidiaUpgrade linux-image-oem-24.04Upgrade linux-image-oem-24.04aUpgrade linux-image-nvidia-64kUpgrade linux-image-lowlatencyUpgrade linux-image-raspiUpgrade linux-image-6.8.0-1006-gkeUpgrade linux-image-6.8.0-1007-intelUpgrade linux-image-6.8.0-1010-azureUpgrade linux-image-genericUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-gkeUpgrade linux-image-6.8.0-1008-ibmUpgrade linux-image-generic-lpaeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-awsUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1010-azure-fdeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-1011-awsUpgrade linux-image-oracleUpgrade linux-image-6.8.0-38-lowlatencyUpgrade linux-image-6.8.0-38-generic-64kUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1008-oemUpgrade linux-image-6.8.0-1007-raspiUpgrade linux-image-kvmUpgrade linux-image-6.8.0-38-lowlatency-64k | Jul 12, 2024 | May 19, 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