UBUNTU-CVE-2026-90136: Medium severity ubuntu/linux-hwe-edge vulnerability
In the Linux kernel, the following vulnerability has been resolved: platform/x86/amd/hsmp: Reject negative power cap writes in hwmon hsmphwmonwrite() takes the user-supplied hwmon value as a signed long and assigns "val / MICROWATTPERMILLIWATT" to msg.args[0], which is a u32. MICROWATTPERMILLIWATT is an unsigned long, so a negative write to power1cap (e.g. "echo -1 > power1cap") is first converted to a huge unsigned value by the division and then stored into the u32 argument. As a result a nonsensical, multi-gigawatt socket power limit is sent to the SMU via HSMPSETSOCKETPOWERLIMIT instead of the write being rejected. Reject negative values with -EINVAL before the conversion. Tested with HSMP enabled: CAP=$(dirname $(grep -l amdhsmphwmon \ /sys/class/hwmon/hwmon/name | head -1))/power1cap # negative write echo -1000000 > $CAP ; echo "ret=$?" # valid positive write must still work echo 400000000 > $CAP ; echo "ret=$?" Before: # echo -1000000 > $CAP ; echo "ret=$?" ret=0 <- accepted; bogus limit sent to SMU # echo 400000000 > $CAP ; echo "ret=$?" ret=0 After: # echo -1000000 > $CAP ; echo "ret=$?" bash: echo: write error: Invalid argument ret=1 <- rejected with -EINVAL # echo 400000000 > $CAP ; echo "ret=$?" ret=0 <- valid write still works
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
In hsmp_hwmon_write(), reject negative user-supplied values for power1_cap with -EINVAL before converting val / MICROWATT_PER_MILLIWATT to the __u32 message argument.