ftrace: Have set_graph_functions handle write with RDWR
Since reading the set_graph_functions uses seq functions, which sets the file->private_data pointer to a seq_file descriptor. On writes the ftrace_graph_data descriptor is set to file->private_data. But if the file is opened for RDWR, the ftrace_graph_write() will incorrectly use the file->private_data descriptor instead of ((struct seq_file *)file->private_data)->private pointer, and this can crash the kernel. Acked-by: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
This commit is contained in:
parent
d4ad9a1cca
commit
ae98d27afc
|
@ -4842,6 +4842,12 @@ ftrace_graph_write(struct file *file, const char __user *ubuf,
|
|||
if (trace_parser_get_init(&parser, FTRACE_BUFF_MAX))
|
||||
return -ENOMEM;
|
||||
|
||||
/* Read mode uses seq functions */
|
||||
if (file->f_mode & FMODE_READ) {
|
||||
struct seq_file *m = file->private_data;
|
||||
fgd = m->private;
|
||||
}
|
||||
|
||||
read = trace_get_user(&parser, ubuf, cnt, ppos);
|
||||
|
||||
if (read >= 0 && trace_parser_loaded((&parser))) {
|
||||
|
|
Loading…
Reference in New Issue