[for-next][PATCH 05/21] tracing: eval_map_next() should always increase position index

From: Steven Rostedt
Date: Thu Jan 30 2020 - 09:49:17 EST


From: Vasily Averin <vvs@xxxxxxxxxxxxx>

if seq_file .next fuction does not change position index,
read after some lseek can generate unexpected output.

Link: http://lkml.kernel.org/r/7ad85b22-1866-977c-db17-88ac438bc764@xxxxxxxxxxxxx

Signed-off-by: Vasily Averin <vvs@xxxxxxxxxxxxx>
[ This is not a bug fix, it just makes it "technically correct"
which is why I applied it. NULL is only returned on an anomaly
which triggers a WARN_ON ]
Signed-off-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>
---
kernel/trace/trace.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 6a28b1b9bf42..8d144fd94aa8 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -5399,14 +5399,12 @@ static void *eval_map_next(struct seq_file *m, void *v, loff_t *pos)
* Paranoid! If ptr points to end, we don't want to increment past it.
* This really should never happen.
*/
+ (*pos)++;
ptr = update_eval_map(ptr);
if (WARN_ON_ONCE(!ptr))
return NULL;

ptr++;
-
- (*pos)++;
-
ptr = update_eval_map(ptr);

return ptr;
--
2.24.1