hwmon: (w83791d) Convert macros to functions to avoid TOCTOU
Description
In the Linux kernel, the following vulnerability has been resolved:
hwmon: (w83791d) Convert macros to functions to avoid TOCTOU
The macro FAN_FROM_REG evaluates its arguments multiple times. When used in lockless contexts involving shared driver data, this leads to Time-of-Check to Time-of-Use (TOCTOU) race conditions, potentially causing divide-by-zero errors.
Convert the macro to a static function. This guarantees that arguments are evaluated only once (pass-by-value), preventing the race conditions.
Additionally, in store_fan_div, move the calculation of the minimum limit inside the update lock. This ensures that the read-modify-write sequence operates on consistent data.
Adhere to the principle of minimal changes by only converting macros that evaluate arguments multiple times and are used in lockless contexts.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Affected products
104- osv-coords102 versionspkg:linux/kernelpkg:rpm/opensuse/dtb-aarch64&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/dtb-aarch64&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-64kb&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-64kb&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-azure&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-debug&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-default-base&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-default-base&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-default&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-default&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-docs&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-docs&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-kvmsmall&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-kvmsmall&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-obs-build&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-obs-build&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-obs-qa&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-obs-qa&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-rt&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-source&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-source&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-syms&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-syms&distro=openSUSE%20Leap%2016.0pkg:rpm/opensuse/kernel-zfcpdump&distro=openSUSE%20Leap%2015.6pkg:rpm/opensuse/kernel-zfcpdump&distro=openSUSE%20Leap%2016.0pkg:rpm/suse/kernel-64kb&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7pkg:rpm/suse/kernel-64kb&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-64kb&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-64kb&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-64kb&distro=SUSE%20Linux%20Micro%206.2pkg:rpm/suse/kernel-azure&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Public%20Cloud%2015%20SP7pkg:rpm/suse/kernel-azure&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-azure&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-default-base&distro=SUSE%20Linux%20Micro%206.2pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20High%20Availability%20Extension%2015%20SP6pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20High%20Availability%20Extension%2015%20SP7pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20High%20Availability%20Extension%2016.0pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2015%20SP6pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2015%20SP7pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Legacy%2015%20SP7pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Enterprise%20Workstation%20Extension%2015%20SP7pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-default&distro=SUSE%20Linux%20Micro%206.2pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Development%20Tools%2015%20SP7pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-docs&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-kvmsmall&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-kvmsmall&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-kvmsmall&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-kvmsmall&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-livepatch-SLE15-SP6_Update_20&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2015%20SP6pkg:rpm/suse/kernel-livepatch-SLE15-SP7-RT_Update_9&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2015%20SP7pkg:rpm/suse/kernel-livepatch-SLE15-SP7_Update_9&distro=SUSE%20Linux%20Enterprise%20Live%20Patching%2015%20SP7pkg:rpm/suse/kernel-obs-build&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Development%20Tools%2015%20SP7pkg:rpm/suse/kernel-obs-build&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-obs-build&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-obs-qa&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-obs-qa&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-rt&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-rt&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-rt&distro=SUSE%20Linux%20Micro%206.2pkg:rpm/suse/kernel-rt&distro=SUSE%20Real%20Time%20Module%2015%20SP7pkg:rpm/suse/kernel-source-azure&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Public%20Cloud%2015%20SP7pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Development%20Tools%2015%20SP7pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-source&distro=SUSE%20Linux%20Micro%206.2pkg:rpm/suse/kernel-source-rt&distro=SUSE%20Linux%20Micro%206.0pkg:rpm/suse/kernel-source-rt&distro=SUSE%20Linux%20Micro%206.1pkg:rpm/suse/kernel-source-rt&distro=SUSE%20Real%20Time%20Module%2015%20SP7pkg:rpm/suse/kernel-syms-azure&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Public%20Cloud%2015%20SP7pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Development%20Tools%2015%20SP7pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20Applications%2015%20SP6pkg:rpm/suse/kernel-syms&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0pkg:rpm/suse/kernel-syms-rt&distro=SUSE%20Real%20Time%20Module%2015%20SP7pkg:rpm/suse/kernel-zfcpdump&distro=SUSE%20Linux%20Enterprise%20Module%20for%20Basesystem%2015%20SP7pkg:rpm/suse/kernel-zfcpdump&distro=SUSE%20Linux%20Enterprise%20Server%2015%20SP6-LTSSpkg:rpm/suse/kernel-zfcpdump&distro=SUSE%20Linux%20Enterprise%20Server%2016.0pkg:rpm/suse/kernel-zfcpdump&distro=SUSE%20Linux%20Enterprise%20Server%20for%20SAP%20applications%2016.0
>= 2.6.18, < 5.10.248+ 101 more
- (no CPE)range: >= 2.6.18, < 5.10.248
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.4.0-150600.23.87.1.150600.12.40.1
- (no CPE)range: < 6.12.0-160000.26.1.160000.2.7
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.20.27.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.53.31.1.150700.17.21.1
- (no CPE)range: < 6.4.0-150600.23.87.1.150600.12.40.1
- (no CPE)range: < 6.12.0-160000.26.1.160000.2.7
- (no CPE)range: < 6.4.0-150600.23.87.1.150600.12.40.1
- (no CPE)range: < 6.12.0-160000.26.1.160000.2.7
- (no CPE)range: < 6.4.0-39.1.21.16
- (no CPE)range: < 6.4.0-39.1.21.16
- (no CPE)range: < 6.12.0-160000.26.1.160000.2.7
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 1-150600.13.3.1
- (no CPE)range: < 1-150700.1.3.2
- (no CPE)range: < 1-150700.15.3.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-40.1
- (no CPE)range: < 6.4.0-40.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.7.31.2
- (no CPE)range: < 6.4.0-150700.20.27.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 6.4.0-39.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-40.1
- (no CPE)range: < 6.4.0-40.1
- (no CPE)range: < 6.4.0-150700.7.31.1
- (no CPE)range: < 6.4.0-150700.20.27.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.4.0-150700.7.31.1
- (no CPE)range: < 6.4.0-150700.53.31.1
- (no CPE)range: < 6.4.0-150600.23.87.1
- (no CPE)range: < 6.12.0-160000.26.1
- (no CPE)range: < 6.12.0-160000.26.1
Patches
Vulnerability mechanics
References
7- git.kernel.org/stable/c/3dceb68f6ad33156032ef4da21a93d84059cca6dmitre
- git.kernel.org/stable/c/670d7ef945d3a84683594429aea6ab2cdfa5ceb4mitre
- git.kernel.org/stable/c/a9fb6e8835a22f5796c1182ed612daed3fd273afmitre
- git.kernel.org/stable/c/bf5b03227f2e6d4360004886d268f9df8993ef8fmitre
- git.kernel.org/stable/c/c8cf0c2bdcccc6634b6915ff793b844e12436680mitre
- git.kernel.org/stable/c/f2b579a0c37c0df19603d719894a942a295f634amitre
- git.kernel.org/stable/c/f94800fbc26ccf7c81eb791707b038a57aa39a18mitre
News mentions
0No linked articles in our index yet.