Commit e34dc490 authored by Rasmus Villemoes's avatar Rasmus Villemoes Committed by Mark Brown

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: default avatarRasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9ae3109d
...@@ -337,6 +337,7 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file, ...@@ -337,6 +337,7 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file,
char *buf; char *buf;
char *entry; char *entry;
int ret; int ret;
unsigned entry_len;
if (*ppos < 0 || !count) if (*ppos < 0 || !count)
return -EINVAL; return -EINVAL;
...@@ -364,18 +365,18 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file, ...@@ -364,18 +365,18 @@ static ssize_t regmap_reg_ranges_read_file(struct file *file,
p = 0; p = 0;
mutex_lock(&map->cache_lock); mutex_lock(&map->cache_lock);
list_for_each_entry(c, &map->debugfs_off_cache, list) { list_for_each_entry(c, &map->debugfs_off_cache, list) {
snprintf(entry, PAGE_SIZE, "%x-%x", entry_len = snprintf(entry, PAGE_SIZE, "%x-%x",
c->base_reg, c->max_reg); c->base_reg, c->max_reg);
if (p >= *ppos) { if (p >= *ppos) {
if (buf_pos + 1 + strlen(entry) > count) if (buf_pos + 1 + entry_len > count)
break; break;
snprintf(buf + buf_pos, count - buf_pos, snprintf(buf + buf_pos, count - buf_pos,
"%s", entry); "%s", entry);
buf_pos += strlen(entry); buf_pos += entry_len;
buf[buf_pos] = '\n'; buf[buf_pos] = '\n';
buf_pos++; buf_pos++;
} }
p += strlen(entry) + 1; p += entry_len + 1;
} }
mutex_unlock(&map->cache_lock); mutex_unlock(&map->cache_lock);
......
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