From: Greg Kroah-Hartman Date: Tue, 13 Aug 2013 06:05:40 +0000 (-0700) Subject: 3.0-stable patches X-Git-Tag: v3.0.91~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3ea96f7c823bb20237c5898e084d093fd6aec4cb;p=thirdparty%2Fkernel%2Fstable-queue.git 3.0-stable patches added patches: scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch --- diff --git a/queue-3.0/scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch b/queue-3.0/scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch new file mode 100644 index 00000000000..2d47a1c83a8 --- /dev/null +++ b/queue-3.0/scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch @@ -0,0 +1,34 @@ +From b497ceb964a80ebada3b9b3cea4261409039e25a Mon Sep 17 00:00:00 2001 +From: Arnd Bergmann +Date: Thu, 14 Mar 2013 15:21:36 +0100 +Subject: SCSI: nsp32: use mdelay instead of large udelay constants + +From: Arnd Bergmann + +commit b497ceb964a80ebada3b9b3cea4261409039e25a upstream. + +ARM cannot handle udelay for more than 2 miliseconds, so we +should use mdelay instead for those. + +Signed-off-by: Arnd Bergmann +Acked-by: GOTO Masanori +Cc: YOKOTA Hiroshi +Cc: "James E.J. Bottomley" +Cc: Guenter Roeck +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/scsi/nsp32.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/scsi/nsp32.c ++++ b/drivers/scsi/nsp32.c +@@ -2927,7 +2927,7 @@ static void nsp32_do_bus_reset(nsp32_hw_ + * reset SCSI bus + */ + nsp32_write1(base, SCSI_BUS_CONTROL, BUSCTL_RST); +- udelay(RESET_HOLD_TIME); ++ mdelay(RESET_HOLD_TIME / 1000); + nsp32_write1(base, SCSI_BUS_CONTROL, 0); + for(i = 0; i < 5; i++) { + intrdat = nsp32_read2(base, IRQ_STATUS); /* dummy read */ diff --git a/queue-3.0/series b/queue-3.0/series index 08296c62395..37c11650092 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -6,3 +6,5 @@ virtio-console-fix-raising-sigio-after-port-unplug.patch virtio-console-return-enodev-on-all-read-operations-after-unplug.patch debugfs-debugfs_remove_recursive-must-not-rely-on-list_empty-d_subdirs.patch cifs-silence-compiler-warnings-showing-up-with-gcc-4.7.0.patch +tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch +scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch diff --git a/queue-3.0/tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch b/queue-3.0/tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch new file mode 100644 index 00000000000..56ed38a67f8 --- /dev/null +++ b/queue-3.0/tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch @@ -0,0 +1,66 @@ +From ed5467da0e369e65b247b99eb6403cb79172bcda Mon Sep 17 00:00:00 2001 +From: Andrew Vagin +Date: Fri, 2 Aug 2013 21:16:43 +0400 +Subject: tracing: Fix fields of struct trace_iterator that are zeroed by mistake + +From: Andrew Vagin + +commit ed5467da0e369e65b247b99eb6403cb79172bcda upstream. + +tracing_read_pipe zeros all fields bellow "seq". The declaration contains +a comment about that, but it doesn't help. + +The first field is "snapshot", it's true when current open file is +snapshot. Looks obvious, that it should not be zeroed. + +The second field is "started". It was converted from cpumask_t to +cpumask_var_t (v2.6.28-4983-g4462344), in other words it was +converted from cpumask to pointer on cpumask. + +Currently the reference on "started" memory is lost after the first read +from tracing_read_pipe and a proper object will never be freed. + +The "started" is never dereferenced for trace_pipe, because trace_pipe +can't have the TRACE_FILE_ANNOTATE options. + +Link: http://lkml.kernel.org/r/1375463803-3085183-1-git-send-email-avagin@openvz.org + +Signed-off-by: Andrew Vagin +Signed-off-by: Steven Rostedt +Signed-off-by: Greg Kroah-Hartman + +--- + include/linux/ftrace_event.h | 4 +++- + kernel/trace/trace.c | 1 + + 2 files changed, 4 insertions(+), 1 deletion(-) + +--- a/include/linux/ftrace_event.h ++++ b/include/linux/ftrace_event.h +@@ -71,6 +71,8 @@ struct trace_iterator { + /* trace_seq for __print_flags() and __print_symbolic() etc. */ + struct trace_seq tmp_seq; + ++ cpumask_var_t started; ++ + /* The below is zeroed out in pipe_read */ + struct trace_seq seq; + struct trace_entry *ent; +@@ -82,7 +84,7 @@ struct trace_iterator { + loff_t pos; + long idx; + +- cpumask_var_t started; ++ /* All new field here will be zeroed out in pipe_read */ + }; + + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -3245,6 +3245,7 @@ waitagain: + memset(&iter->seq, 0, + sizeof(struct trace_iterator) - + offsetof(struct trace_iterator, seq)); ++ cpumask_clear(iter->started); + iter->pos = -1; + + trace_event_read_lock();