diff options
| -rw-r--r-- | drivers/acpi/processor_thermal.c | 24 | 
1 files changed, 18 insertions, 6 deletions
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c index 641b5450a0d..e8e652710e6 100644 --- a/drivers/acpi/processor_thermal.c +++ b/drivers/acpi/processor_thermal.c @@ -218,9 +218,13 @@ processor_get_max_state(struct thermal_cooling_device *cdev,  			unsigned long *state)  {  	struct acpi_device *device = cdev->devdata; -	struct acpi_processor *pr = acpi_driver_data(device); +	struct acpi_processor *pr; -	if (!device || !pr) +	if (!device) +		return -EINVAL; + +	pr = acpi_driver_data(device); +	if (!pr)  		return -EINVAL;  	*state = acpi_processor_max_state(pr); @@ -232,9 +236,13 @@ processor_get_cur_state(struct thermal_cooling_device *cdev,  			unsigned long *cur_state)  {  	struct acpi_device *device = cdev->devdata; -	struct acpi_processor *pr = acpi_driver_data(device); +	struct acpi_processor *pr; -	if (!device || !pr) +	if (!device) +		return -EINVAL; + +	pr = acpi_driver_data(device); +	if (!pr)  		return -EINVAL;  	*cur_state = cpufreq_get_cur_state(pr->id); @@ -248,11 +256,15 @@ processor_set_cur_state(struct thermal_cooling_device *cdev,  			unsigned long state)  {  	struct acpi_device *device = cdev->devdata; -	struct acpi_processor *pr = acpi_driver_data(device); +	struct acpi_processor *pr;  	int result = 0;  	int max_pstate; -	if (!device || !pr) +	if (!device) +		return -EINVAL; + +	pr = acpi_driver_data(device); +	if (!pr)  		return -EINVAL;  	max_pstate = cpufreq_get_max_state(pr->id);  |