mlxsw: thermal: Fix null dereference of NULL temperature parameter
authorColin Ian King <colin.king@canonical.com>
Wed, 9 Jun 2021 17:56:57 +0000 (18:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Jun 2021 22:39:14 +0000 (15:39 -0700)
The call to mlxsw_thermal_module_temp_and_thresholds_get passes a NULL
pointer for the temperature and this can be dereferenced in this function
if the mlxsw_reg_query call fails.  The simplist fix is to pass the
address of dummy temperature variable instead of a NULL pointer.

Addresses-Coverity: ("Explicit null dereferenced")
Fixes: 72a64c2fe9d8 ("mlxsw: thermal: Read module temperature thresholds using MTMP register")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/core_thermal.c

index b96fb88..677a53f 100644 (file)
@@ -742,7 +742,7 @@ mlxsw_thermal_module_init(struct device *dev, struct mlxsw_core *core,
                          struct mlxsw_thermal *thermal, u8 module)
 {
        struct mlxsw_thermal_module *module_tz;
-       int crit_temp, emerg_temp;
+       int dummy_temp, crit_temp, emerg_temp;
        u16 sensor_index;
 
        sensor_index = MLXSW_REG_MTMP_MODULE_INDEX_MIN + module;
@@ -757,7 +757,7 @@ mlxsw_thermal_module_init(struct device *dev, struct mlxsw_core *core,
        /* Initialize all trip point. */
        mlxsw_thermal_module_trips_reset(module_tz);
        /* Read module temperature and thresholds. */
-       mlxsw_thermal_module_temp_and_thresholds_get(core, sensor_index, NULL,
+       mlxsw_thermal_module_temp_and_thresholds_get(core, sensor_index, &dummy_temp,
                                                     &crit_temp, &emerg_temp);
        /* Update trip point according to the module data. */
        return mlxsw_thermal_module_trips_update(dev, core, module_tz,