diff mbox

[1/1] drm/radeon: avoid NULL dereference, si_get_vce_clock_voltage

Message ID 1471812743-5095-1-git-send-email-xypron.glpk@gmx.de (mailing list archive)
State New, archived
Headers show

Commit Message

Heinrich Schuchardt Aug. 21, 2016, 8:52 p.m. UTC
It does not make sense to check if table is NULL
and afterwards to dereference it without
considering the result.

The inconsistency was indicated by cppcheck.
An actual NULL pointer dereference was not observed.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
 drivers/gpu/drm/radeon/si_dpm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Heinrich Schuchardt Aug. 21, 2016, 9:20 p.m. UTC | #1
On 08/21/2016 11:06 PM, Joe Perches wrote:
> On Sun, 2016-08-21 at 22:52 +0200, Heinrich Schuchardt wrote:
>> It does not make sense to check if table is NULL
>> and afterwards to dereference it without
>> considering the result.
> 
> This makes no sense.
> 
>> The inconsistency was indicated by cppcheck.
> 
> Perhaps this is a defect in cppcheck?
> 
>> An actual NULL pointer dereference was not observed.
> []
>> diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c
> []
>> @@ -2962,7 +2962,7 @@ static int si_get_vce_clock_voltage(struct radeon_device *rdev,
>>  		&rdev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table;
>>  
>>  	if (((evclk == 0) && (ecclk == 0)) ||
>> -	    (table && (table->count == 0))) {
> 
> Here table is only dereferenced if table is non-null
> 
>> +	    table == NULL || table->count == 0) {
>>  		*voltage = 0;
>>  		return 0;
>>  	}
> 
> Perhaps the unnecessary parentheses can be reduce though.
> 
>  	if ((evclk == 0 && ecclk == 0) || (table && table->count == 0)) {
> 
The possible NULL pointer dereference would occur here:

2970        for (i = 0; i < table->count; i++) {
diff mbox

Patch

diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c
index e6abc09..ba2cf12 100644
--- a/drivers/gpu/drm/radeon/si_dpm.c
+++ b/drivers/gpu/drm/radeon/si_dpm.c
@@ -2962,7 +2962,7 @@  static int si_get_vce_clock_voltage(struct radeon_device *rdev,
 		&rdev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table;
 
 	if (((evclk == 0) && (ecclk == 0)) ||
-	    (table && (table->count == 0))) {
+	    table == NULL || table->count == 0) {
 		*voltage = 0;
 		return 0;
 	}