CVE-2026-31770: hwmon: (occ) Fix division by zero in occ_show_power_1()

Published May 1, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

hwmon: (occ) Fix division by zero in occshowpower1()

In occshowpower1() case 1, the accumulator is divided by updatetag without checking for zero. If no samples have been collected yet (e.g. during early boot when the sensor block is included but hasn't been updated), updatetag is zero, causing a kernel divide-by-zero crash.

The 2019 fix in commit 211186cae14d ("hwmon: (occ) Fix division by zero issue") only addressed occgetpowravg() used by occshowpower2() and occshowpowera0(). This separate code path in occshowpower1() was missed.

Fix this by reusing the existing occgetpowravg() helper, which already handles the zero-sample case and uses mulu64u32div() to multiply before dividing for better precision. Move the helper above occshowpower1() so it is visible at the call site.

[groeck: Fix alignment problems reported by checkpatch]

Affected Software

15 affected componentsFixes available
Linux Linux kernel
Linux Linux kernel>=5.0<5.10.253
Linux Linux kernel>=5.11<5.15.203
Linux Linux kernel>=5.16<6.1.168
Linux Linux kernel>=6.2<6.6.134
Linux Linux kernel>=6.7<6.12.81
Linux Linux kernel>=6.13<6.18.22
Linux Linux kernel>=6.19<6.19.12
Linux Linux kernel=7.0-rc1
Linux Linux kernel=7.0-rc2
Linux Linux kernel=7.0-rc3
Linux Linux kernel=7.0-rc4
Linux Linux kernel=7.0-rc5
Linux Linux kernel=7.0-rc6
debian/linux
6.1.176-16.1.190-16.12.107-16.12.115-27.2.12-17.2.15-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade debian/linux to a version that resolves this vulnerability.

    Fixed in 6.1.176-1Fixed in 6.1.190-1Fixed in 6.12.107-1Fixed in 6.12.113-1Fixed in 7.2.12-1Fixed in 7.2.13-1
  2. Compensating control

    Update occ_show_power_1() case 1 to reuse the existing occ_get_powr_avg() helper, moving the helper above occ_show_power_1() so it is visible at the call site; this handles the zero-sample case and uses mul_u64_u32_div() before dividing.

Event History

May 1, 2026
CVE Published
via MITRE·02:14 PM
Data Sourced
via MITRE·02:14 PM
Description
Data Sourced
via NVD·03:16 PM
RemedyDescriptionSeverityWeaknessAffected Software

Parent advisories

This vulnerability appears in the following advisories.

Peer vulnerabilities

Found alongside the following vulnerabilities.

Frequently Asked Questions

1

What is the severity of CVE-2026-31770?

CVE-2026-31770 has been classified as a medium severity vulnerability due to the potential for a division by zero error.

2

How do I fix CVE-2026-31770?

To fix CVE-2026-31770, update to the latest patched version of the Linux kernel that addresses the division by zero issue.

3

What systems are affected by CVE-2026-31770?

CVE-2026-31770 affects the Linux kernel due to its handling of power measurements in the hardware monitoring subsystem.

4

What is the impact of CVE-2026-31770?

The impact of CVE-2026-31770 includes possible denial of service due to system crashes resulting from the division by zero.

5

How can I determine if my system is vulnerable to CVE-2026-31770?

You can determine if your system is vulnerable to CVE-2026-31770 by checking the kernel version and comparing it against the fixed versions provided in the security advisories.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203