From e34dc490713f8d9dfbbb5bb56d966d90a9344131 Mon Sep 17 00:00:00 2001 From: Rasmus Villemoes Date: Wed, 30 Sep 2015 20:30:25 +0200 Subject: [PATCH] regmap: debugfs: use snprintf return value in regmap_reg_ranges_read_file() Calling strlen() no less than three times on entry is silly. Since we're formatting into a buffer with plenty of room, there's no chance of truncation, so snprintf() has actually returned the value we want, meaning we don't even have to call strlen once. Signed-off-by: Rasmus Villemoes Signed-off-by: Mark Brown --- drivers/base/regmap/regmap-debugfs.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/base/regmap/regmap-debugfs.c b/drivers/base/regmap/regmap-debugfs.c index 4a4737887cce..1ffc101ca011 100644 --- a/drivers/base/regmap/regmap-debugfs.c +++ b/drivers/base/regmap/regmap-debugfs.c @@ -337,6 +337,7 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file, char *buf; char *entry; int ret; + unsigned entry_len; if (*ppos < 0 || !count) return -EINVAL; @@ -364,18 +365,18 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file, p = 0; mutex_lock(&map->cache_lock); list_for_each_entry(c, &map->debugfs_off_cache, list) { - snprintf(entry, PAGE_SIZE, "%x-%x", - c->base_reg, c->max_reg); + entry_len = snprintf(entry, PAGE_SIZE, "%x-%x", + c->base_reg, c->max_reg); if (p >= *ppos) { - if (buf_pos + 1 + strlen(entry) > count) + if (buf_pos + 1 + entry_len > count) break; snprintf(buf + buf_pos, count - buf_pos, "%s", entry); - buf_pos += strlen(entry); + buf_pos += entry_len; buf[buf_pos] = '\n'; buf_pos++; } - p += strlen(entry) + 1; + p += entry_len + 1; } mutex_unlock(&map->cache_lock); -- 2.39.2