Fix up write_threads() to eliminate the small possibility of overflowing its output buffer. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> --- fs/nfsd/nfsctl.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c index a8e3f6b..f8a2a7f 100644 --- a/fs/nfsd/nfsctl.c +++ b/fs/nfsd/nfsctl.c @@ -666,9 +666,9 @@ static ssize_t write_filehandle(struct file *file, char *buf, size_t size) static ssize_t write_threads(struct file *file, char *buf, size_t size) { char *mesg = buf; - int rv; + if (size > 0) { - int newthreads; + int rv, newthreads; rv = get_int(&mesg, &newthreads); if (rv) return rv; @@ -678,8 +678,9 @@ static ssize_t write_threads(struct file *file, char *buf, size_t size) if (rv) return rv; } - sprintf(buf, "%d\n", nfsd_nrthreads()); - return strlen(buf); + + return scnprintf(buf, SIMPLE_TRANSACTION_LIMIT, "%d\n", + nfsd_nrthreads()); } /** -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html