Skip to content

Commit

Permalink
PM: wakeup: simplify the output logic of pm_show_wakelocks()
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Lee Jones <[email protected]>
Signed-off-by: Rafael J. Wysocki <[email protected]>
  • Loading branch information
gregkh authored and rafaeljw committed Jan 25, 2022
1 parent e783362 commit c9d967b
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions kernel/power/wakelock.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit c9d967b

Please sign in to comment.