[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