In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix a sdiv overflow issue
Zac Ecob reported a problem where a bpf program may cause kernel crash due to the following error: Oops: divide error: 0000 [#1] PREEMPT SMP KASAN PTI
The failure is due to the below signed divide: LLONG_MIN/-1 where LLONG_MIN equals to -9,223,372,036,854,775,808. LLONG_MIN/-1 is supposed to give a positive number 9,223,372,036,854,775,808, but it is impossible since for 64-bit system, the maximum positive number is 9,223,372,036,854,775,807. On x86_64, LLONG_MIN/-1 will cause a kernel exception. On arm64, the result for LLONG_MIN/-1 is LLONG_MIN.
Further investigation found all the following sdiv/smod cases may trigger an exception when bpf program is running on x86_64 platform: - LLONG_MIN/-1 for 64bit operation - INT_MIN/-1 for 32bit operation - LLONG_MIN%-1 for 64bit operation - INT_MIN%-1 for 32bit operation where -1 can be an immediate or in a register.
On arm64, there are no exceptions: - LLONG_MIN/-1 = LLONG_MIN - INT_MIN/-1 = INT_MIN - LLONG_MIN%-1 = 0 - INT_MIN%-1 = 0 where -1 can be an immediate or in a register.
Insn patching is needed to handle the above cases and the patched codes produced results aligned with above arm64 result. The below are pseudo codes to handle sdiv/smod exceptions including both divisor -1 and divisor 0 and the divisor is stored in a register.
sdiv: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L2 if tmp == 0 goto L1 rY = 0 L1: rY = -rY; goto L3 L2: rY /= rX L3:
smod: tmp = rX tmp += 1 /* [-1, 0] -> [0, 1] if tmp >(unsigned) 1 goto L1 if tmp == 1 (is64 ? goto L2 : goto L3) rY = 0; goto L2 L1: rY %= rX L2: goto L4 // only when !is64 L3: wY = wY // only when !is64 L4:
[1] https://lore.kernel.org/bpf/tPJLTEh7S_DxFEqAI2Ji5MBSoZVg7_G-Py2iaZpAaWtM961fFTWtsnlzwvTbzBzaUzwQAoNATXKUlt0LZOFgnDcIyKCswAnAGdUF3LBrhGQ=@protonmail.com/
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-modulesUpgrade kernel-rt-coreUpgrade kernel-tools-libsUpgrade kernel-rt-debug-coreUpgrade kernel-devel-matchedUpgrade kernel-rt-modules-extraUpgrade kernel-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-zfcpdump-develUpgrade kernelUpgrade kernel-cross-headersUpgrade libperfUpgrade kernel-debugUpgrade kernel-64k-modules-coreUpgrade kernel-debug-develUpgrade kernel-debug-coreUpgrade kernel-develUpgrade kernel-modules-coreUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-64k-debug-develUpgrade kernel-64k-develUpgrade python3-perfUpgrade rtlaUpgrade kernel-64kUpgrade kernel-64k-debug-modules-extraUpgrade kernel-64k-debug-coreUpgrade kernel-coreUpgrade kernel-rt-debug-develUpgrade kernel-64k-modulesUpgrade kernel-headersUpgrade kernel-64k-coreUpgrade kernel-debug-uki-virtUpgrade kernel-debug-devel-matchedUpgrade kernel-uki-virtUpgrade kernel-toolsUpgrade kernel-tools-libs-develUpgrade kernel-rtUpgrade kernel-zfcpdumpUpgrade kernel-64k-modules-extraUpgrade kernel-64k-debug-devel-matchedUpgrade kernel-rt-debugUpgrade kernel-docUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug-modulesUpgrade bpftoolUpgrade kernel-64k-debug-modulesUpgrade perfUpgrade kernel-zfcpdump-devel-matchedUpgrade kernel-zfcpdump-modules-coreUpgrade kernel-debug-modules-coreUpgrade kernel-rt-develUpgrade kernel-rt-debug-modules-coreUpgrade kernel-debug-modules-extraUpgrade kernel-zfcpdump-modulesUpgrade kernel-64k-debugUpgrade kernel-64k-debug-modules-coreUpgrade kernel-zfcpdump-coreUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-modules-coreUpgrade kernel-64k-devel-matchedUpgrade kernel-rt-modulesUpgrade kernel-uki-virt-addonsUpgrade rv | Jan 14, 2025 | Oct 21, 2024 |
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Oracle_linux | — | Upgrade kernel | Jan 7, 2025 | Oct 21, 2024 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Feb 10, 2025 | Oct 21, 2024 |
| Ubuntu | — | Upgrade linux-image-6.11.0-1011-oracleUpgrade linux-image-azure-lts-24.04Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-6.8.0-54-generic-64kUpgrade linux-image-6.8.0-54-lowlatencyUpgrade linux-image-6.11.0-1009-gcpUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1006-gkeopUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-azure-nvidiaUpgrade linux-image-6.8.0-1024-gcpUpgrade linux-image-6.8.0-57-generic-64kUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-6.8.0-1020-oracleUpgrade linux-image-awsUpgrade linux-image-oem-22.04bUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-aws-lts-24.04Upgrade linux-image-raspiUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-realtimeUpgrade linux-image-oracleUpgrade linux-image-6.11.0-1011-oracle-64kUpgrade linux-image-gcpUpgrade linux-image-oem-24.04aUpgrade linux-image-azure-fde-lts-24.04Upgrade linux-image-ibmUpgrade linux-image-6.8.0-1023-awsUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-6.8.0-1022-ibmUpgrade linux-image-6.8.0-1022-nvidia-64kUpgrade linux-image-6.8.0-1014-azure-nvidiaUpgrade linux-image-ibm-classicUpgrade linux-image-6.11.0-1005-realtimeUpgrade linux-image-azure-fdeUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1024-gcp-64kUpgrade linux-image-6.11.0-1010-lowlatency-64kUpgrade linux-image-6.8.0-1022-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-54-lowlatency-64kUpgrade linux-image-nvidia-64kUpgrade linux-image-6.8.0-1019-gkeUpgrade linux-image-lowlatency-64kUpgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-6.11.0-1010-lowlatencyUpgrade linux-image-6.11.0-1015-oemUpgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-oem-22.04cUpgrade linux-image-gkeopUpgrade linux-image-azureUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-oem-24.04Upgrade linux-image-gkeUpgrade linux-image-6.8.0-1020-oracle-64kUpgrade linux-image-lowlatencyUpgrade linux-image-6.11.0-18-genericUpgrade linux-image-6.11.0-1009-azureUpgrade linux-image-oem-22.04dUpgrade linux-image-6.11.0-1009-awsUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1024-oemUpgrade linux-image-nvidiaUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1019-raspiUpgrade linux-image-6.11.0-1008-raspiUpgrade linux-image-oem-22.04aUpgrade linux-image-6.11.0-1009-azure-fdeUpgrade linux-image-6.8.0-1025-azureUpgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-oem-24.04bUpgrade linux-image-6.8.0-54-genericUpgrade linux-image-genericUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.11.0-18-generic-64kUpgrade linux-image-realtime-hwe-24.04Upgrade linux-image-6.8.0-1022-nvidiaUpgrade linux-image-6.8.0-57-genericUpgrade linux-image-6.8.0-1025-azure-fdeUpgrade linux-image-6.8.0-1022-nvidia-lowlatencyUpgrade linux-image-gkeop-6.8Upgrade linux-image-gcp-64kUpgrade linux-image-oem-22.04Upgrade linux-image-nvidia-6.8Upgrade linux-image-virtual-hwe-24.04Upgrade linux-image-virtual-hwe-22.04Upgrade linux-image-generic-lpae | Feb 20, 2025 | Oct 21, 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