From: Greg Kroah-Hartman Date: Sun, 14 Apr 2013 18:33:08 +0000 (-0700) Subject: 3.8-stable patches X-Git-Tag: v3.0.74~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=384559206cc957032e54276c84acc5be3db3ed73;p=thirdparty%2Fkernel%2Fstable-queue.git 3.8-stable patches added patches: tracing-fix-possible-null-pointer-dereferences.patch --- diff --git a/queue-3.8/series b/queue-3.8/series index 23d60851739..8397448a380 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -18,3 +18,4 @@ vfs-revert-spurious-fix-to-spinning-prevention-in-prune_icache_sb.patch kobject-fix-kset_find_obj-race-with-concurrent-last-kobject_put.patch gpio-fix-wrong-checking-condition-for-gpio-range.patch x86-32-fix-possible-incomplete-tlb-invalidate-with-pae-pagetables.patch +tracing-fix-possible-null-pointer-dereferences.patch diff --git a/queue-3.8/tracing-fix-possible-null-pointer-dereferences.patch b/queue-3.8/tracing-fix-possible-null-pointer-dereferences.patch new file mode 100644 index 00000000000..73e399fdd2a --- /dev/null +++ b/queue-3.8/tracing-fix-possible-null-pointer-dereferences.patch @@ -0,0 +1,108 @@ +From 6a76f8c0ab19f215af2a3442870eeb5f0e81998d Mon Sep 17 00:00:00 2001 +From: Namhyung Kim +Date: Thu, 11 Apr 2013 15:55:01 +0900 +Subject: tracing: Fix possible NULL pointer dereferences + +From: Namhyung Kim + +commit 6a76f8c0ab19f215af2a3442870eeb5f0e81998d upstream. + +Currently set_ftrace_pid and set_graph_function files use seq_lseek +for their fops. However seq_open() is called only for FMODE_READ in +the fops->open() so that if an user tries to seek one of those file +when she open it for writing, it sees NULL seq_file and then panic. + +It can be easily reproduced with following command: + + $ cd /sys/kernel/debug/tracing + $ echo 1234 | sudo tee -a set_ftrace_pid + +In this example, GNU coreutils' tee opens the file with fopen(, "a") +and then the fopen() internally calls lseek(). + +Link: http://lkml.kernel.org/r/1365663302-2170-1-git-send-email-namhyung@kernel.org + +Signed-off-by: Namhyung Kim +Cc: Frederic Weisbecker +Cc: Ingo Molnar +Cc: Namhyung Kim +Cc: stable@vger.kernel.org +Signed-off-by: Steven Rostedt +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/ftrace.h | 2 +- + kernel/trace/ftrace.c | 10 +++++----- + kernel/trace/trace_stack.c | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) + +--- a/include/linux/ftrace.h ++++ b/include/linux/ftrace.h +@@ -394,7 +394,7 @@ ssize_t ftrace_filter_write(struct file + size_t cnt, loff_t *ppos); + ssize_t ftrace_notrace_write(struct file *file, const char __user *ubuf, + size_t cnt, loff_t *ppos); +-loff_t ftrace_regex_lseek(struct file *file, loff_t offset, int whence); ++loff_t ftrace_filter_lseek(struct file *file, loff_t offset, int whence); + int ftrace_regex_release(struct inode *inode, struct file *file); + + void __init +--- a/kernel/trace/ftrace.c ++++ b/kernel/trace/ftrace.c +@@ -2674,7 +2674,7 @@ ftrace_notrace_open(struct inode *inode, + } + + loff_t +-ftrace_regex_lseek(struct file *file, loff_t offset, int whence) ++ftrace_filter_lseek(struct file *file, loff_t offset, int whence) + { + loff_t ret; + +@@ -3548,7 +3548,7 @@ static const struct file_operations ftra + .open = ftrace_filter_open, + .read = seq_read, + .write = ftrace_filter_write, +- .llseek = ftrace_regex_lseek, ++ .llseek = ftrace_filter_lseek, + .release = ftrace_regex_release, + }; + +@@ -3556,7 +3556,7 @@ static const struct file_operations ftra + .open = ftrace_notrace_open, + .read = seq_read, + .write = ftrace_notrace_write, +- .llseek = ftrace_regex_lseek, ++ .llseek = ftrace_filter_lseek, + .release = ftrace_regex_release, + }; + +@@ -3761,8 +3761,8 @@ static const struct file_operations ftra + .open = ftrace_graph_open, + .read = seq_read, + .write = ftrace_graph_write, ++ .llseek = ftrace_filter_lseek, + .release = ftrace_graph_release, +- .llseek = seq_lseek, + }; + #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ + +@@ -4420,7 +4420,7 @@ static const struct file_operations ftra + .open = ftrace_pid_open, + .write = ftrace_pid_write, + .read = seq_read, +- .llseek = seq_lseek, ++ .llseek = ftrace_filter_lseek, + .release = ftrace_pid_release, + }; + +--- a/kernel/trace/trace_stack.c ++++ b/kernel/trace/trace_stack.c +@@ -322,7 +322,7 @@ static const struct file_operations stac + .open = stack_trace_filter_open, + .read = seq_read, + .write = ftrace_filter_write, +- .llseek = ftrace_regex_lseek, ++ .llseek = ftrace_filter_lseek, + .release = ftrace_regex_release, + }; +