drm/amd/pm/powerplay: Prevent division by zero
commit 4b8c3c0d17c07f301011e2908fecd2ebdcfe3d1c upstream.
The user can set any speed value.
If speed is greater than UINT_MAX/8, division by zero is possible.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: c52dcf4919 ("drm/amd/pp: Avoid divide-by-zero in fan_ctrl_set_fan_speed_rpm")
Signed-off-by: Denis Arefev <arefev@swemel.ru>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
6413fed016
commit
bd4d90adbc
@@ -307,10 +307,10 @@ int vega10_fan_ctrl_set_fan_speed_rpm(struct pp_hwmgr *hwmgr, uint32_t speed)
|
|||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (hwmgr->thermal_controller.fanInfo.bNoFan ||
|
if (hwmgr->thermal_controller.fanInfo.bNoFan ||
|
||||||
speed == 0 ||
|
(!speed || speed > UINT_MAX/8) ||
|
||||||
(speed < hwmgr->thermal_controller.fanInfo.ulMinRPM) ||
|
(speed < hwmgr->thermal_controller.fanInfo.ulMinRPM) ||
|
||||||
(speed > hwmgr->thermal_controller.fanInfo.ulMaxRPM))
|
(speed > hwmgr->thermal_controller.fanInfo.ulMaxRPM))
|
||||||
return -1;
|
return -EINVAL;
|
||||||
|
|
||||||
if (PP_CAP(PHM_PlatformCaps_MicrocodeFanControl))
|
if (PP_CAP(PHM_PlatformCaps_MicrocodeFanControl))
|
||||||
result = vega10_fan_ctrl_stop_smc_fan_control(hwmgr);
|
result = vega10_fan_ctrl_stop_smc_fan_control(hwmgr);
|
||||||
|
|||||||
Reference in New Issue
Block a user