summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Carpenter <error27@gmail.com>2010-08-12 09:50:09 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-22 10:19:58 -0700
commita95898114059e1038f3f7ee9bd2e43aefa62709a (patch)
treea1d559d638fdfe2ee668628827c5a75927362ac8
parentde838a93cbf35671f890360b886a5c2a8a5d1aa4 (diff)
downloadlinux-a95898114059e1038f3f7ee9bd2e43aefa62709a.tar.gz
linux-a95898114059e1038f3f7ee9bd2e43aefa62709a.tar.bz2
linux-a95898114059e1038f3f7ee9bd2e43aefa62709a.zip
serial: mfd: snprintf() returns largish values
snprintf() returns the number of bytes which would have been written so it can be larger than the size of the buffer. In this case it's fine, but people copy and paste this code so I've fixed it. Signed-off-by: Dan Carpenter <error27@gmail.com> Acked-by: Feng Tang <feng.tang@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/serial/mfd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/serial/mfd.c b/drivers/serial/mfd.c
index 5dff45c76d32..ad35130cd8a0 100644
--- a/drivers/serial/mfd.c
+++ b/drivers/serial/mfd.c
@@ -172,6 +172,9 @@ static ssize_t port_show_regs(struct file *file, char __user *user_buf,
len += snprintf(buf + len, HSU_REGS_BUFSIZE - len,
"DIV: \t\t0x%08x\n", serial_in(up, UART_DIV));
+ if (len > HSU_REGS_BUFSIZE)
+ len = HSU_REGS_BUFSIZE;
+
ret = simple_read_from_buffer(user_buf, count, ppos, buf, len);
kfree(buf);
return ret;
@@ -219,6 +222,9 @@ static ssize_t dma_show_regs(struct file *file, char __user *user_buf,
len += snprintf(buf + len, HSU_REGS_BUFSIZE - len,
"D0TSR: \t\t0x%08x\n", chan_readl(chan, HSU_CH_D3TSR));
+ if (len > HSU_REGS_BUFSIZE)
+ len = HSU_REGS_BUFSIZE;
+
ret = simple_read_from_buffer(user_buf, count, ppos, buf, len);
kfree(buf);
return ret;