mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-02 17:49:03 +02:00 
			
		
		
		
	PM / Sleep: call early resume handlers when suspend_noirq fails
Commit cf579dfb82 (PM / Sleep: Introduce
"late suspend" and "early resume" of devices) introduced a bug where
suspend_late handlers would be called, but if dpm_suspend_noirq returned
an error the early_resume handlers would never be called.  All devices
would end up on the dpm_late_early_list, and would never be resumed
again.
Fix it by calling dpm_resume_early when dpm_suspend_noirq returns
an error.
Signed-off-by: Colin Cross <ccross@android.com>
Cc: stable@vger.kernel.org
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
			
			
This commit is contained in:
		
							parent
							
								
									11388c87d2
								
							
						
					
					
						commit
						064b021fbe
					
				
					 1 changed files with 9 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -989,8 +989,16 @@ static int dpm_suspend_late(pm_message_t state)
 | 
			
		|||
int dpm_suspend_end(pm_message_t state)
 | 
			
		||||
{
 | 
			
		||||
	int error = dpm_suspend_late(state);
 | 
			
		||||
	if (error)
 | 
			
		||||
		return error;
 | 
			
		||||
 | 
			
		||||
	return error ? : dpm_suspend_noirq(state);
 | 
			
		||||
	error = dpm_suspend_noirq(state);
 | 
			
		||||
	if (error) {
 | 
			
		||||
		dpm_resume_early(state);
 | 
			
		||||
		return error;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
EXPORT_SYMBOL_GPL(dpm_suspend_end);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue