From: Greg Kroah-Hartman Date: Tue, 13 Aug 2013 06:05:47 +0000 (-0700) Subject: 3.4-stable patches X-Git-Tag: v3.0.91~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2f501ef703f3e6ae98d0fb643499137b4d0bb2a2;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-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.4/scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch b/queue-3.4/scsi-nsp32-use-mdelay-instead-of-large-udelay-constants.patch new file mode 100644 index 00000000000..8345511fabe --- /dev/null +++ b/queue-3.4/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 +@@ -2926,7 +2926,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.4/series b/queue-3.4/series index 08cd8fbab0a..c84e3c3dbd6 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -11,3 +11,5 @@ ext4-fix-mount-remount-error-messages-for-incompatible-mount-options.patch cifs-extend-the-buffer-length-enought-for-sprintf-using.patch usb-core-don-t-try-to-reset_device-a-port-that-got-just-disconnected.patch debugfs-debugfs_remove_recursive-must-not-rely-on-list_empty-d_subdirs.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.4/tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch b/queue-3.4/tracing-fix-fields-of-struct-trace_iterator-that-are-zeroed-by-mistake.patch new file mode 100644 index 00000000000..e4450b8f0e6 --- /dev/null +++ b/queue-3.4/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; +@@ -83,7 +85,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 +@@ -3478,6 +3478,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();