The purpose of the operation is to get ftrace_iterator, which is embedded in file or seq_file for FMODE_WRITE/FMODE_READ respectively. Since we don't have a seq_file for FMODE_WRITE case, it is meaningless to cast file->private_data to seq_file.
Let's move the definition when there is a valid seq_file. Signed-off-by: Wei Yang <richard.weiy...@linux.alibaba.com> --- kernel/trace/ftrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index edc233122598..12cb535769bc 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -5558,7 +5558,6 @@ static void __init set_ftrace_early_filters(void) int ftrace_regex_release(struct inode *inode, struct file *file) { - struct seq_file *m = (struct seq_file *)file->private_data; struct ftrace_iterator *iter; struct ftrace_hash **orig_hash; struct trace_parser *parser; @@ -5566,6 +5565,7 @@ int ftrace_regex_release(struct inode *inode, struct file *file) int ret; if (file->f_mode & FMODE_READ) { + struct seq_file *m = file->private_data; iter = m->private; seq_release(inode, file); } else -- 2.20.1 (Apple Git-117)