From 2e30f4b85769a2d6058f867660d5aec3b5df57a1 Mon Sep 17 00:00:00 2001 From: Jurij Smakov Date: Thu, 2 Nov 2006 17:35:49 +0000 Subject: [PATCH] * [sparc] Add bugfix/sparc/t1k-cpu-lockup.patch (thanks to David Miller) to prevent soft CPU lockup on T1000 servers, which can be triggered from userspace, resulting in denial of service. Ref: http://marc.theaimsgroup.com/?t=116241422600003&r=1&w=2 svn path=/dists/trunk/linux-2.6/; revision=7684 --- debian/changelog | 3 ++ .../patches/bugfix/sparc/t1k-cpu-lockup.patch | 37 +++++++++++++++++++ debian/patches/series/4 | 1 + 3 files changed, 41 insertions(+) create mode 100644 debian/patches/bugfix/sparc/t1k-cpu-lockup.patch diff --git a/debian/changelog b/debian/changelog index 4e9ae8ede..cba192bb9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -23,6 +23,9 @@ linux-2.6 (2.6.18-4) UNRELEASED; urgency=low (closes: #394697). * [sparc] Add bugfix/sparc/sunblade1k-boot-fix.patch (thanks to David Miller) to fix a boottime crash on SunBlade1000. + * [sparc] Add bugfix/sparc/t1k-cpu-lockup.patch (thanks to David Miller) + to prevent soft CPU lockup on T1000 servers, which can be triggered from + userspace, resulting in denial of service. [ Martin Michlmayr ] * arm/iop32x: Fix the interrupt of the 2nd Ethernet slot on N2100. diff --git a/debian/patches/bugfix/sparc/t1k-cpu-lockup.patch b/debian/patches/bugfix/sparc/t1k-cpu-lockup.patch new file mode 100644 index 000000000..b5452be69 --- /dev/null +++ b/debian/patches/bugfix/sparc/t1k-cpu-lockup.patch @@ -0,0 +1,37 @@ +diff --git a/include/asm-sparc64/futex.h b/include/asm-sparc64/futex.h +index dee4020..7392fc4 100644 +--- a/include/asm-sparc64/futex.h ++++ b/include/asm-sparc64/futex.h +@@ -87,24 +87,22 @@ static inline int + futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) + { + __asm__ __volatile__( +- "\n1: lduwa [%2] %%asi, %0\n" +- "2: casa [%2] %%asi, %0, %1\n" +- "3:\n" ++ "\n1: casa [%3] %%asi, %2, %0\n" ++ "2:\n" + " .section .fixup,#alloc,#execinstr\n" + " .align 4\n" +- "4: ba 3b\n" +- " mov %3, %0\n" ++ "3: ba 2b\n" ++ " mov %4, %0\n" + " .previous\n" + " .section __ex_table,\"a\"\n" + " .align 4\n" +- " .word 1b, 4b\n" +- " .word 2b, 4b\n" ++ " .word 1b, 3b\n" + " .previous\n" +- : "=&r" (oldval) +- : "r" (newval), "r" (uaddr), "i" (-EFAULT) ++ : "=r" (newval) ++ : "0" (newval), "r" (oldval), "r" (uaddr), "i" (-EFAULT) + : "memory"); + +- return oldval; ++ return newval; + } + + #endif /* !(_SPARC64_FUTEX_H) */ diff --git a/debian/patches/series/4 b/debian/patches/series/4 index 5901a4c91..cacba7a27 100644 --- a/debian/patches/series/4 +++ b/debian/patches/series/4 @@ -41,3 +41,4 @@ + features/mips/qemu-kernel.patch + features/mips/backtrace.patch + features/fintek-f75375.patch ++ bugfix/sparc/t1k-cpu-lockup.patch