Skip to content

Commit 50cdaf0

Browse files
Liming WangIngo Molnar
authored andcommitted
ftrace: improve seq_operation of ftrace
Impact: make ftrace position computing more sane First remove useless ->pos field. Then we needn't check seq_printf in .show like other place. Signed-off-by: Liming Wang <[email protected]> Reviewed-by: Bruce Ashfield <[email protected]> Signed-off-by: Ingo Molnar <[email protected]>
1 parent c7cc773 commit 50cdaf0

File tree

1 file changed

+10
-17
lines changed

1 file changed

+10
-17
lines changed

kernel/trace/ftrace.c

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,6 @@ enum {
786786
#define FTRACE_BUFF_MAX (KSYM_SYMBOL_LEN+4) /* room for wildcards */
787787

788788
struct ftrace_iterator {
789-
loff_t pos;
790789
struct ftrace_page *pg;
791790
unsigned idx;
792791
unsigned flags;
@@ -811,6 +810,8 @@ t_next(struct seq_file *m, void *v, loff_t *pos)
811810
iter->pg = iter->pg->next;
812811
iter->idx = 0;
813812
goto retry;
813+
} else {
814+
iter->idx = -1;
814815
}
815816
} else {
816817
rec = &iter->pg->records[iter->idx++];
@@ -833,22 +834,22 @@ t_next(struct seq_file *m, void *v, loff_t *pos)
833834
}
834835
spin_unlock(&ftrace_lock);
835836

836-
iter->pos = *pos;
837-
838837
return rec;
839838
}
840839

841840
static void *t_start(struct seq_file *m, loff_t *pos)
842841
{
843842
struct ftrace_iterator *iter = m->private;
844843
void *p = NULL;
845-
loff_t l = -1;
846844

847-
if (*pos > iter->pos)
848-
*pos = iter->pos;
845+
if (*pos > 0) {
846+
if (iter->idx < 0)
847+
return p;
848+
(*pos)--;
849+
iter->idx--;
850+
}
849851

850-
l = *pos;
851-
p = t_next(m, p, &l);
852+
p = t_next(m, p, pos);
852853

853854
return p;
854855
}
@@ -859,21 +860,15 @@ static void t_stop(struct seq_file *m, void *p)
859860

860861
static int t_show(struct seq_file *m, void *v)
861862
{
862-
struct ftrace_iterator *iter = m->private;
863863
struct dyn_ftrace *rec = v;
864864
char str[KSYM_SYMBOL_LEN];
865-
int ret = 0;
866865

867866
if (!rec)
868867
return 0;
869868

870869
kallsyms_lookup(rec->ip, NULL, NULL, NULL, str);
871870

872-
ret = seq_printf(m, "%s\n", str);
873-
if (ret < 0) {
874-
iter->pos--;
875-
iter->idx--;
876-
}
871+
seq_printf(m, "%s\n", str);
877872

878873
return 0;
879874
}
@@ -899,7 +894,6 @@ ftrace_avail_open(struct inode *inode, struct file *file)
899894
return -ENOMEM;
900895

901896
iter->pg = ftrace_pages_start;
902-
iter->pos = 0;
903897

904898
ret = seq_open(file, &show_ftrace_seq_ops);
905899
if (!ret) {
@@ -986,7 +980,6 @@ ftrace_regex_open(struct inode *inode, struct file *file, int enable)
986980

987981
if (file->f_mode & FMODE_READ) {
988982
iter->pg = ftrace_pages_start;
989-
iter->pos = 0;
990983
iter->flags = enable ? FTRACE_ITER_FILTER :
991984
FTRACE_ITER_NOTRACE;
992985

0 commit comments

Comments
 (0)