lkml.org 
[lkml]   [2020]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 4/6] sysctl: make proc_put_long() use scnprintf
Date
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@toxicpanda.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
\
 
 \ /
  Last update: 2020-08-13 23:05    [W:0.090 / U:0.184 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site