Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 73578a9b authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

PM: wakeup: simplify the output logic of pm_show_wakelocks()



commit c9d967b2ce40d71e968eb839f36c936b8a9cf1ea upstream.

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.

Reviewed-by: default avatarLee Jones <lee.jones@linaro.org>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 31136e54
Loading
Loading
Loading
Loading
+4 −7
Original line number Diff line number Diff line
@@ -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