diff options
author | Jerry Snitselaar <jsnitsel@redhat.com> | 2015-11-16 12:57:28 -0700 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2015-12-23 14:27:20 -0500 |
commit | ff078d8fc644722f7b163d79e8a03b00b9dc2385 (patch) | |
tree | 54ed114e88d8d85899d3e9821d6ff4523b726291 /lib/seq_buf.c | |
parent | 27dff4e04199cf0ecf06239a26d0d225d3c046e9 (diff) | |
download | lwn-ff078d8fc644722f7b163d79e8a03b00b9dc2385.tar.gz lwn-ff078d8fc644722f7b163d79e8a03b00b9dc2385.zip |
tracing: Use seq_buf_used() in seq_buf_to_user() instead of len
commit 5ac48378414d ("tracing: Use trace_seq_used() and seq_buf_used()
instead of len") changed the tracing code to use trace_seq_used() and
seq_buf_used() instead of using the seq_buf len directly to avoid
overflow issues, but missed a spot in seq_buf_to_user() that makes use
of s->len.
Cleaned up the code a bit as well per suggestion of Steve Rostedt.
Link: http://lkml.kernel.org/r/1447703848-2951-1-git-send-email-jsnitsel@redhat.com
Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Diffstat (limited to 'lib/seq_buf.c')
-rw-r--r-- | lib/seq_buf.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/seq_buf.c b/lib/seq_buf.c index 5c94e1012a91..cb18469e1f49 100644 --- a/lib/seq_buf.c +++ b/lib/seq_buf.c @@ -306,10 +306,12 @@ int seq_buf_to_user(struct seq_buf *s, char __user *ubuf, int cnt) if (!cnt) return 0; - if (s->len <= s->readpos) + len = seq_buf_used(s); + + if (len <= s->readpos) return -EBUSY; - len = seq_buf_used(s) - s->readpos; + len -= s->readpos; if (cnt > len) cnt = len; ret = copy_to_user(ubuf, s->buffer + s->readpos, cnt); |