if seq_file .next fuction does not change position index,
read after some lseek can generate unexpected output.
https://bugzilla.kernel.org/show_bug.cgi?id=206283
Signed-off-by: Vasily Averin <[email protected]>
---
kernel/trace/ftrace.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 9bf1f2c..ca25210 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -3442,8 +3442,10 @@ static void *t_mod_start(struct seq_file *m, loff_t *pos)
loff_t l = *pos; /* t_probe_start() must use original pos */
void *ret;
- if (unlikely(ftrace_disabled))
+ if (unlikely(ftrace_disabled)) {
+ (*pos)++;
return NULL;
+ }
if (iter->flags & FTRACE_ITER_PROBE)
return t_probe_next(m, pos);
--
1.8.3.1
On Fri, 24 Jan 2020 10:02:51 +0300
Vasily Averin <[email protected]> wrote:
> if seq_file .next fuction does not change position index,
> read after some lseek can generate unexpected output.
>
> https://bugzilla.kernel.org/show_bug.cgi?id=206283
> Signed-off-by: Vasily Averin <[email protected]>
> ---
> kernel/trace/ftrace.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
> index 9bf1f2c..ca25210 100644
> --- a/kernel/trace/ftrace.c
> +++ b/kernel/trace/ftrace.c
> @@ -3442,8 +3442,10 @@ static void *t_mod_start(struct seq_file *m, loff_t *pos)
> loff_t l = *pos; /* t_probe_start() must use original pos */
> void *ret;
>
> - if (unlikely(ftrace_disabled))
> + if (unlikely(ftrace_disabled)) {
> + (*pos)++;
> return NULL;
> + }
This isn't needed. If ftrace_disabled is set, we shouldn't be printing
anything. This case isn't the same as the report in the bugzilla.
-- Steve
>
> if (iter->flags & FTRACE_ITER_PROBE)
> return t_probe_next(m, pos);
On 1/29/20 8:12 PM, Steven Rostedt wrote:
> On Fri, 24 Jan 2020 10:02:51 +0300
> Vasily Averin <[email protected]> wrote:
>
>> if seq_file .next fuction does not change position index,
>> read after some lseek can generate unexpected output.
>>
>> https://bugzilla.kernel.org/show_bug.cgi?id=206283
>> Signed-off-by: Vasily Averin <[email protected]>
>> ---
>> kernel/trace/ftrace.c | 4 +++-
>> 1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
>> index 9bf1f2c..ca25210 100644
>> --- a/kernel/trace/ftrace.c
>> +++ b/kernel/trace/ftrace.c
>> @@ -3442,8 +3442,10 @@ static void *t_mod_start(struct seq_file *m, loff_t *pos)
>> loff_t l = *pos; /* t_probe_start() must use original pos */
>> void *ret;
>>
>> - if (unlikely(ftrace_disabled))
>> + if (unlikely(ftrace_disabled)) {
>> + (*pos)++;
>> return NULL;
>> + }
>
> This isn't needed. If ftrace_disabled is set, we shouldn't be printing
> anything. This case isn't the same as the report in the bugzilla.
I'm agree, thank you, let's drop this patch.
Vasily Averin