function-graph: Fix seqfile memory leak

Every time we cat set_graph_function, we leak memory allocated
by seq_open().

Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <4A67D907.2010500@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>

authored by Li Zefan and committed by Steven Rostedt 87827111 d8cc1ab7

+12 -3
+12 -3
kernel/trace/ftrace.c
··· 2596 } 2597 2598 static int 2599 ftrace_set_func(unsigned long *array, int *idx, char *buffer) 2600 { 2601 struct dyn_ftrace *rec; ··· 2732 } 2733 2734 static const struct file_operations ftrace_graph_fops = { 2735 - .open = ftrace_graph_open, 2736 - .read = seq_read, 2737 - .write = ftrace_graph_write, 2738 }; 2739 #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 2740
··· 2596 } 2597 2598 static int 2599 + ftrace_graph_release(struct inode *inode, struct file *file) 2600 + { 2601 + if (file->f_mode & FMODE_READ) 2602 + seq_release(inode, file); 2603 + return 0; 2604 + } 2605 + 2606 + static int 2607 ftrace_set_func(unsigned long *array, int *idx, char *buffer) 2608 { 2609 struct dyn_ftrace *rec; ··· 2724 } 2725 2726 static const struct file_operations ftrace_graph_fops = { 2727 + .open = ftrace_graph_open, 2728 + .read = seq_read, 2729 + .write = ftrace_graph_write, 2730 + .release = ftrace_graph_release, 2731 }; 2732 #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ 2733