mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	PM: wakeup: simplify the output logic of pm_show_wakelocks()
The buffer handling in pm_show_wakelocks() is tricky, and hopefully correct. Ensure it really is correct by using sysfs_emit_at() which handles all of the tricky string handling logic in a PAGE_SIZE buffer for us automatically as this is a sysfs file being read from. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									e783362eb5
								
							
						
					
					
						commit
						c9d967b2ce
					
				
					 1 changed files with 4 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -39,23 +39,20 @@ ssize_t pm_show_wakelocks(char *buf, bool show_active)
 | 
			
		|||
{
 | 
			
		||||
	struct rb_node *node;
 | 
			
		||||
	struct wakelock *wl;
 | 
			
		||||
	char *str = buf;
 | 
			
		||||
	char *end = buf + PAGE_SIZE;
 | 
			
		||||
	int len = 0;
 | 
			
		||||
 | 
			
		||||
	mutex_lock(&wakelocks_lock);
 | 
			
		||||
 | 
			
		||||
	for (node = rb_first(&wakelocks_tree); node; node = rb_next(node)) {
 | 
			
		||||
		wl = rb_entry(node, struct wakelock, node);
 | 
			
		||||
		if (wl->ws->active == show_active)
 | 
			
		||||
			str += scnprintf(str, end - str, "%s ", wl->name);
 | 
			
		||||
			len += sysfs_emit_at(buf, len, "%s ", wl->name);
 | 
			
		||||
	}
 | 
			
		||||
	if (str > buf)
 | 
			
		||||
		str--;
 | 
			
		||||
 | 
			
		||||
	str += scnprintf(str, end - str, "\n");
 | 
			
		||||
	len += sysfs_emit_at(buf, len, "\n");
 | 
			
		||||
 | 
			
		||||
	mutex_unlock(&wakelocks_lock);
 | 
			
		||||
	return (str - buf);
 | 
			
		||||
	return len;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if CONFIG_PM_WAKELOCKS_LIMIT > 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue