Commit c9d967b2 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman Committed by Rafael J. Wysocki

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: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent e783362e
...@@ -39,23 +39,20 @@ ssize_t pm_show_wakelocks(char *buf, bool show_active) ...@@ -39,23 +39,20 @@ ssize_t pm_show_wakelocks(char *buf, bool show_active)
{ {
struct rb_node *node; struct rb_node *node;
struct wakelock *wl; struct wakelock *wl;
char *str = buf; int len = 0;
char *end = buf + PAGE_SIZE;
mutex_lock(&wakelocks_lock); mutex_lock(&wakelocks_lock);
for (node = rb_first(&wakelocks_tree); node; node = rb_next(node)) { for (node = rb_first(&wakelocks_tree); node; node = rb_next(node)) {
wl = rb_entry(node, struct wakelock, node); wl = rb_entry(node, struct wakelock, node);
if (wl->ws->active == show_active) 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); mutex_unlock(&wakelocks_lock);
return (str - buf); return len;
} }
#if CONFIG_PM_WAKELOCKS_LIMIT > 0 #if CONFIG_PM_WAKELOCKS_LIMIT > 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment