[kernel] r21652 - in dists/sid/linux/debian: . patches patches/bugfix/mips
Aurelien Jarno
aurel32 at moszumanska.debian.org
Wed Jul 30 18:53:38 UTC 2014
Author: aurel32
Date: Wed Jul 30 18:53:38 2014
New Revision: 21652
Log:
[mips*/octeon] Fix /proc/cpuinfo issues.
Added:
dists/sid/linux/debian/patches/bugfix/mips/MIPS-OCTEON-make-get_system_type-thread-safe.patch
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Wed Jul 30 18:52:36 2014 (r21651)
+++ dists/sid/linux/debian/changelog Wed Jul 30 18:53:38 2014 (r21652)
@@ -7,6 +7,7 @@
#756134).
* Rewrite postinst to not require File::stat perl module (Closes: #756207).
* [mips*] Avoid smp_processor_id() in preemptible code.
+ * [mips*/octeon] Fix /proc/cpuinfo issues.
[ Ben Hutchings ]
* [amd64] Reject x32 executables if x32 ABI not supported
Added: dists/sid/linux/debian/patches/bugfix/mips/MIPS-OCTEON-make-get_system_type-thread-safe.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/bugfix/mips/MIPS-OCTEON-make-get_system_type-thread-safe.patch Wed Jul 30 18:53:38 2014 (r21652)
@@ -0,0 +1,66 @@
+From: Aaro Koskinen <aaro.koskinen at nsn.com>
+Date: Tue, 22 Jul 2014 14:51:08 +0300
+Subject: MIPS: OCTEON: make get_system_type() thread-safe
+Origin: https://git.kernel.org/cgit/linux/kernel/git/jhogan/mips.git/commit?id=726d129dfdc9622197a8c3f5947ce09c1a4c935e
+
+get_system_type() is not thread-safe on OCTEON. It uses static data,
+also more dangerous issue is that it's calling cvmx_fuse_read_byte()
+every time without any synchronization. Currently it's possible to get
+processes stuck looping forever in kernel simply by launching multiple
+readers of /proc/cpuinfo:
+
+ (while true; do cat /proc/cpuinfo > /dev/null; done) &
+ (while true; do cat /proc/cpuinfo > /dev/null; done) &
+ ...
+
+Fix by initializing the system type string only once during the early
+boot.
+
+Signed-off-by: Aaro Koskinen <aaro.koskinen at nsn.com>
+Cc: stable at vger.kernel.org
+Reviewed-by: Markos Chandras <markos.chandras at imgtec.com>
+Patchwork: http://patchwork.linux-mips.org/patch/7437/
+Signed-off-by: James Hogan <james.hogan at imgtec.com>
+---
+ arch/mips/cavium-octeon/setup.c | 18 +++++++++++++-----
+ 1 file changed, 13 insertions(+), 5 deletions(-)
+
+diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c
+index 008e9c8..c9d9c62 100644
+--- a/arch/mips/cavium-octeon/setup.c
++++ b/arch/mips/cavium-octeon/setup.c
+@@ -458,6 +458,18 @@ static void octeon_halt(void)
+ octeon_kill_core(NULL);
+ }
+
++static char __read_mostly octeon_system_type[80];
++
++static int __init init_octeon_system_type(void)
++{
++ snprintf(octeon_system_type, sizeof(octeon_system_type), "%s (%s)",
++ cvmx_board_type_to_string(octeon_bootinfo->board_type),
++ octeon_model_get_string(read_c0_prid()));
++
++ return 0;
++}
++early_initcall(init_octeon_system_type);
++
+ /**
+ * Return a string representing the system type
+ *
+@@ -465,11 +477,7 @@ static void octeon_halt(void)
+ */
+ const char *octeon_board_type_string(void)
+ {
+- static char name[80];
+- sprintf(name, "%s (%s)",
+- cvmx_board_type_to_string(octeon_bootinfo->board_type),
+- octeon_model_get_string(read_c0_prid()));
+- return name;
++ return octeon_system_type;
+ }
+
+ const char *get_system_type(void)
+--
+1.7.10.4
+
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Wed Jul 30 18:52:36 2014 (r21651)
+++ dists/sid/linux/debian/patches/series Wed Jul 30 18:53:38 2014 (r21652)
@@ -65,6 +65,7 @@
bugfix/mips/MIPS-ZBOOT-add-missing-linux-string.h-include.patch
bugfix/mips/MIPS-Fix-branch-emulation-of-branch-likely-instructi.patch
bugfix/mips/MIPS-ptrace-Avoid-smp_processor_id-in-preemptible-co.patch
+bugfix/mips/MIPS-OCTEON-make-get_system_type-thread-safe.patch
bugfix/s390/s390-ptrace-fix-PSW-mask-check.patch
# Miscellaneous bug fixes
More information about the Kernel-svn-changes
mailing list