[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200813210411.905010-5-josef@toxicpanda.com>
Date: Thu, 13 Aug 2020 17:04:09 -0400
From: Josef Bacik <josef@...icpanda.com>
To: hch@....de, viro@...IV.linux.org.uk, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, willy@...radead.org,
kernel-team@...com
Subject: [PATCH 4/6] sysctl: make proc_put_long() use scnprintf
Now that we're passing down a kernel buffer with enough space to account
for an extra NULL terminator, go ahead and use scnprintf() to print out
a long in proc_put_long(). count here includes NULL terminator slot in
the buffer, so we will get the correct behavior we're looking for.
Signed-off-by: Josef Bacik <josef@...icpanda.com>
---
kernel/sysctl.c | 15 +++++----------
1 file changed, 5 insertions(+), 10 deletions(-)
diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index 287862f91717..d8cc8737f58f 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -484,6 +484,7 @@ static int proc_get_long(char **buf, size_t *size,
return 0;
}
+#undef TMPBUFLEN
/**
* proc_put_long - converts an integer to a decimal ASCII formatted string
@@ -498,18 +499,12 @@ static int proc_get_long(char **buf, size_t *size,
*/
static void proc_put_long(void **buf, size_t *size, unsigned long val, bool neg)
{
- int len;
- char tmp[TMPBUFLEN], *p = tmp;
+ size_t ret;
- sprintf(p, "%s%lu", neg ? "-" : "", val);
- len = strlen(tmp);
- if (len > *size)
- len = *size;
- memcpy(*buf, tmp, len);
- *size -= len;
- *buf += len;
+ ret = scnprintf(*buf, *size, "%s%lu", neg ? "-" : "", val);
+ *size -= ret;
+ *buf += ret;
}
-#undef TMPBUFLEN
static void proc_put_char(void **buf, size_t *size, char c)
{
--
2.24.1
Powered by blists - more mailing lists