mlxsw: core: Zero payload buffers for couple of registers
We recently discovered a bug in the firmware in which a field's length in
one of the registers was incorrectly set. This caused the firmware to
access garbage data that wasn't initialized by the driver and therefore
emit error messages.
While the bug is already fixed and the driver usually zeros the buffers
passed to the firmware, there are a handful of cases where this isn't
done. Zero the buffer in these cases and prevent similar bugs from
recurring, as they tend to be hard to debug.
Fixes: 52581961d8
("mlxsw: core: Implement fan control using hwmon")
Signed-off-by: Elad Raz <eladr@mellanox.com>
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
27058af401
commit
5b0907407e
|
@ -262,7 +262,7 @@ static void mlxsw_hwmon_attr_add(struct mlxsw_hwmon *mlxsw_hwmon,
|
|||
|
||||
static int mlxsw_hwmon_temp_init(struct mlxsw_hwmon *mlxsw_hwmon)
|
||||
{
|
||||
char mtcap_pl[MLXSW_REG_MTCAP_LEN];
|
||||
char mtcap_pl[MLXSW_REG_MTCAP_LEN] = {0};
|
||||
char mtmp_pl[MLXSW_REG_MTMP_LEN];
|
||||
u8 sensor_count;
|
||||
int i;
|
||||
|
@ -295,7 +295,7 @@ static int mlxsw_hwmon_temp_init(struct mlxsw_hwmon *mlxsw_hwmon)
|
|||
|
||||
static int mlxsw_hwmon_fans_init(struct mlxsw_hwmon *mlxsw_hwmon)
|
||||
{
|
||||
char mfcr_pl[MLXSW_REG_MFCR_LEN];
|
||||
char mfcr_pl[MLXSW_REG_MFCR_LEN] = {0};
|
||||
enum mlxsw_reg_mfcr_pwm_frequency freq;
|
||||
unsigned int type_index;
|
||||
unsigned int num;
|
||||
|
|
|
@ -158,7 +158,7 @@ static void mlxsw_sp_txhdr_construct(struct sk_buff *skb,
|
|||
|
||||
static int mlxsw_sp_base_mac_get(struct mlxsw_sp *mlxsw_sp)
|
||||
{
|
||||
char spad_pl[MLXSW_REG_SPAD_LEN];
|
||||
char spad_pl[MLXSW_REG_SPAD_LEN] = {0};
|
||||
int err;
|
||||
|
||||
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(spad), spad_pl);
|
||||
|
|
|
@ -890,7 +890,7 @@ static const struct switchdev_ops mlxsw_sx_port_switchdev_ops = {
|
|||
|
||||
static int mlxsw_sx_hw_id_get(struct mlxsw_sx *mlxsw_sx)
|
||||
{
|
||||
char spad_pl[MLXSW_REG_SPAD_LEN];
|
||||
char spad_pl[MLXSW_REG_SPAD_LEN] = {0};
|
||||
int err;
|
||||
|
||||
err = mlxsw_reg_query(mlxsw_sx->core, MLXSW_REG(spad), spad_pl);
|
||||
|
|
Loading…
Reference in New Issue