drm/radeon/dpm: off by one in si_set_mc_special_registers()
Subsystems (3)
PATCH 1/1 drm/radeon/dpm: off by one in si_set_mc_special_registers()
These checks should be ">=" instead of ">". j is used as an offset into the table->mc_reg_address[] array and that has SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE (16) elements.
drivers/gpu/drm/radeon/si_dpm.c +3 -3
@@ -5126,7 +5126,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] |=0x100 ; } j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;if (!pi->mem_gddr5) {
@@ -5136,7 +5136,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] = (table->mc_reg_table_entry[k].mc_data[i] &0xffff0000 ) >>16 ; j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ; }break ;
@@ -5149,7 +5149,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, (temp_reg &0xffff0000 ) | (table->mc_reg_table_entry[k].mc_data[i] &0x0000ffff ); j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;break ;default :
PATCH 1/1 drm/radeon/dpm: off by one in si_set_mc_special_registers()
These checks should be ">=" instead of ">". j is used as an offset into the table->mc_reg_address[] array and that has SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE (16) elements.
drivers/gpu/drm/radeon/si_dpm.c +3 -3
@@ -5184,7 +5184,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] |=0x100 ; } j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;if (!pi->mem_gddr5) {
@@ -5194,7 +5194,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] = (table->mc_reg_table_entry[k].mc_data[i] &0xffff0000 ) >>16 ; j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ; }break ;
@@ -5207,7 +5207,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, (temp_reg &0xffff0000 ) | (table->mc_reg_table_entry[k].mc_data[i] &0x0000ffff ); j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;break ;default :
Alex Deucher
AppliedQuoted 5 lines · Dan Carpenter
These checks should be ">=" instead of ">". j is used as an offset into the table->mc_reg_address[] array and that has
SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE(16) elements.Signed-off-by Dan Carpenter <[email protected]>
Applied. thanks!
Alex
Quoted 36 lines
drivers/gpu/drm/radeon/si_dpm.c +3
-3@@ -5184,7 +5184,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] |=0x100 ; } j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;if (!pi->mem_gddr5) {@@ -5194,7 +5194,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, table->mc_reg_table_entry[k].mc_data[j] = (table->mc_reg_table_entry[k].mc_data[i] &0xffff0000 ) >>16 ; j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ; }break ;@@ -5207,7 +5207,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev, (temp_reg &0xffff0000 ) | (table->mc_reg_table_entry[k].mc_data[i] &0x0000ffff ); j++; -if (j >SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE ) +if (j >=SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE )return -EINVAL ;break ;default :_______________________________________________
dri-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dri-devel