diff options
| author | Todd Poynor <toddpoynor@google.com> | 2013-04-22 16:44:58 -0700 | 
|---|---|---|
| committer | Arve Hjønnevåg <arve@android.com> | 2013-07-01 14:16:27 -0700 | 
| commit | fb07c42ed81ae73f08893440cf19a0967c85d1b8 (patch) | |
| tree | 155c52166fa872691ca00cd5a1d30862f0f0f85d /drivers/cpufreq/cpufreq_interactive.c | |
| parent | 90a3b1e8f9a9ce6339cea2eef7703eaf450a4c80 (diff) | |
| download | olio-linux-3.10-fb07c42ed81ae73f08893440cf19a0967c85d1b8.tar.xz olio-linux-3.10-fb07c42ed81ae73f08893440cf19a0967c85d1b8.zip  | |
cpufreq: interactive: handle errors from cpufreq_frequency_table_target
Add checks for error return from cpufreq_frequency_table_target, and be
less noisy on the existing call with an error check.  CPU hotplug and
system shutdown may cause this call to return -EINVAL.
Bug: 8613560
Change-Id: Id78d8829920462c0db1c7e14e717d91740d6cb44
Signed-off-by: Todd Poynor <toddpoynor@google.com>
Diffstat (limited to 'drivers/cpufreq/cpufreq_interactive.c')
| -rw-r--r-- | drivers/cpufreq/cpufreq_interactive.c | 30 | 
1 files changed, 15 insertions, 15 deletions
diff --git a/drivers/cpufreq/cpufreq_interactive.c b/drivers/cpufreq/cpufreq_interactive.c index baf8740f167..1b5d9301e2d 100644 --- a/drivers/cpufreq/cpufreq_interactive.c +++ b/drivers/cpufreq/cpufreq_interactive.c @@ -246,9 +246,10 @@ static unsigned int choose_freq(  		 * than or equal to the target load.  		 */ -		cpufreq_frequency_table_target( -			pcpu->policy, pcpu->freq_table, loadadjfreq / tl, -			CPUFREQ_RELATION_L, &index); +		if (cpufreq_frequency_table_target( +			    pcpu->policy, pcpu->freq_table, loadadjfreq / tl, +			    CPUFREQ_RELATION_L, &index)) +			break;  		freq = pcpu->freq_table[index].frequency;  		if (freq > prevfreq) { @@ -260,10 +261,11 @@ static unsigned int choose_freq(  				 * Find the highest frequency that is less  				 * than freqmax.  				 */ -				cpufreq_frequency_table_target( -					pcpu->policy, pcpu->freq_table, -					freqmax - 1, CPUFREQ_RELATION_H, -					&index); +				if (cpufreq_frequency_table_target( +					    pcpu->policy, pcpu->freq_table, +					    freqmax - 1, CPUFREQ_RELATION_H, +					    &index)) +					break;  				freq = pcpu->freq_table[index].frequency;  				if (freq == freqmin) { @@ -286,10 +288,11 @@ static unsigned int choose_freq(  				 * Find the lowest frequency that is higher  				 * than freqmin.  				 */ -				cpufreq_frequency_table_target( -					pcpu->policy, pcpu->freq_table, -					freqmin + 1, CPUFREQ_RELATION_L, -					&index); +				if (cpufreq_frequency_table_target( +					    pcpu->policy, pcpu->freq_table, +					    freqmin + 1, CPUFREQ_RELATION_L, +					    &index)) +					break;  				freq = pcpu->freq_table[index].frequency;  				/* @@ -388,11 +391,8 @@ static void cpufreq_interactive_timer(unsigned long data)  	if (cpufreq_frequency_table_target(pcpu->policy, pcpu->freq_table,  					   new_freq, CPUFREQ_RELATION_L, -					   &index)) { -		pr_warn_once("timer %d: cpufreq_frequency_table_target error\n", -			     (int) data); +					   &index))  		goto rearm; -	}  	new_freq = pcpu->freq_table[index].frequency;  |