Hello community, here is the log from the commit of package memtest86+ checked in at Thu May 1 14:00:18 CEST 2008. -------- --- arch/i386/memtest86+/memtest86+.changes 2007-08-10 12:58:17.000000000 +0200 +++ /mounts/work_src_done/STABLE/memtest86+/memtest86+.changes 2008-04-30 14:46:33.183033000 +0200 @@ -1,0 +2,12 @@ +Wed Apr 30 14:45:38 CEST 2008 - coolo@suse.de + +- update to 2.01 - among others: + - Solved a major bug in Memory Address Errors Reporting + - Patched for Intel-Powered Mac + - Pass duration 20% reduced + - Solved a incoherency with pass progress indicator + - Added support for 45 nm Mobile Core 2 w/ 3 Mo L2 + - Corrected Intel 3-Series (P35/X38) chipset init +- fix buffer overflows (bnc#359490) from Michael Matz + +------------------------------------------------------------------- Old: ---- memtest86+-1.70.tar.gz New: ---- fix-overflows.diff memtest86+-2.01.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ memtest86+.spec ++++++ --- /var/tmp/diff_new_pack.R25945/_old 2008-05-01 13:59:58.000000000 +0200 +++ /var/tmp/diff_new_pack.R25945/_new 2008-05-01 13:59:58.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package memtest86+ (Version 1.70) +# spec file for package memtest86+ (Version 2.01) # -# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine # package are under the same license as the package itself. # @@ -9,14 +9,16 @@ # + Name: memtest86+ -Version: 1.70 -Release: 31 +Version: 2.01 +Release: 1 # License: BSD 3-Clause Group: System/Boot # BuildRoot: %{_tmppath}/%{name}-%{version}-build +BuildRequires: cdrkit-cdrtools-compat %ifarch x86_64 BuildRequires: glibc-devel-32bit %endif @@ -25,12 +27,13 @@ Obsoletes: memtest86 <= 3.2 Provides: memtest86 > 3.2 # -URL: http://www.memtest.org +Url: http://www.memtest.org Source: http://www.memtest.org/download/%{version}/%{name}-%{version}.tar.gz Patch0: fix-destdir Patch1: include-linkonce Patch2: serial-enable Patch3: include-gnuhash +Patch4: fix-overflows.diff # Summary: Memory Testing Image for x86 Architecture @@ -59,6 +62,7 @@ %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 %build %ifarch x86_64 @@ -86,14 +90,23 @@ %doc README* changelog FAQ %changelog -* Fri Aug 10 2007 - duwe@suse.de +* Wed Apr 30 2008 coolo@suse.de +- update to 2.01 - among others: + - Solved a major bug in Memory Address Errors Reporting + - Patched for Intel-Powered Mac + - Pass duration 20%% reduced + - Solved a incoherency with pass progress indicator + - Added support for 45 nm Mobile Core 2 w/ 3 Mo L2 + - Corrected Intel 3-Series (P35/X38) chipset init +- fix buffer overflows (bnc#359490) from Michael Matz +* Fri Aug 10 2007 duwe@suse.de - Do not fail to install if update-bootloader is not there. -* Thu Aug 09 2007 - duwe@suse.de +* Thu Aug 09 2007 duwe@suse.de - Add memtest86+ to boot menu even if installed later (Feature #301969) -* Mon Feb 19 2007 - trenn@suse.de +* Mon Feb 19 2007 trenn@suse.de - added .gnu.hash section -* Thu Jan 25 2007 - duwe@suse.de +* Thu Jan 25 2007 duwe@suse.de + update to 1.70: - Added new DMI polling feature (Thanks to Joachim D.) - Added Support for Core/Core2 Solo/Duo/Quad CPU @@ -107,7 +120,7 @@ - Added Support for Intel i975X - Added Support for Intel Q965/P965 - Added Support for Intel Q963/Q965 -* Thu Nov 16 2006 - mrueckert@suse.de +* Thu Nov 16 2006 mrueckert@suse.de - switch to memtest86+ (http://www.memtest.org) Compared to memtest86 3.2 it supports more hardware. and has additional fixes. see http://www.memtest.org/#change for all @@ -121,41 +134,41 @@ - cleaned up build section and directly use install instead of the broken install target - added changelog and FAQ to the docs -* Wed Jan 25 2006 - mls@suse.de +* Wed Jan 25 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Tue May 10 2005 - duwe@suse.de +* Tue May 10 2005 duwe@suse.de - include *.gnu.linkonce.t.* sections in ld script, to build cleanly on amd64 with gcc4 -* Mon Mar 14 2005 - duwe@suse.de +* Mon Mar 14 2005 duwe@suse.de - update to current version 3.2: more support for current CPUs and chipsets fix Bugs #60303 (duped #72202), #71215 -* Mon Mar 22 2004 - stepan@suse.de +* Mon Mar 22 2004 stepan@suse.de - update to 3.1a. This fixes compilation with gcc 3.x - drop precompiled binary completely - add ExclusiveArch for x86 and AMD64 -* Fri Mar 19 2004 - stepan@suse.de +* Fri Mar 19 2004 stepan@suse.de - update to v3.1 - remove gcc 2.95 exceptions -* Sun Sep 08 2002 - kukuk@suse.de +* Sun Sep 08 2002 kukuk@suse.de - Add splitt alias [Bug #19111] -* Thu Sep 05 2002 - garloff@suse.de +* Thu Sep 05 2002 garloff@suse.de - memtest86-3.0 seems to hang on some machines if the serial console support is enabled, but no serial console connected. Add a timeout waiting for the serial console. (Bug #18302) -* Mon Sep 02 2002 - garloff@suse.de +* Mon Sep 02 2002 garloff@suse.de - Supply complete image (compiled by gcc-2.95), as I don't succeed solving the gcc-3.2 problems at this moment. (#18302) -* Sat Aug 31 2002 - garloff@suse.de +* Sat Aug 31 2002 garloff@suse.de - Supply main.s compiled with gcc-2.95 to work around problem with gcc-3.2. -* Tue Jul 30 2002 - garloff@suse.de +* Tue Jul 30 2002 garloff@suse.de - Split off lilo package. -* Tue Jul 30 2002 - sf@suse.de +* Tue Jul 30 2002 sf@suse.de - added -m32 to compiler and linker for x86_64 - added --32 to as - added glibc-devel-32bit for x86_64 -* Fri Jun 07 2002 - garloff@suse.de +* Fri Jun 07 2002 garloff@suse.de - Update to memtest86-3.0: * Testing more than 2GB should work now. * Use PIC instead of two copies @@ -163,15 +176,15 @@ * ^l/l gives screen refresh (after connecting serial console) * Netbooting operational again * LinuxBIOS support (memory sizing) -* Mon Apr 22 2002 - garloff@suse.de +* Mon Apr 22 2002 garloff@suse.de - Update to memtest86-2.9: * Provide three memory sizing modes; default is conservative one probably not testing all memory on some boards * Testing more than 2GB supported * Memory testing in segments. Minor bug fixes. -* Fri Feb 15 2002 - mantel@suse.de +* Fri Feb 15 2002 mantel@suse.de - remove x bit from memtest.bin since it's not a Linux executable -* Wed Dec 12 2001 - garloff@suse.de +* Wed Dec 12 2001 garloff@suse.de - Update to memtest86-2.8(a): * Reworked build process; a network bootable boot image can be produced @@ -180,13 +193,13 @@ * Serial console disabled by default - Reenabled memtest86 serial console (9600 8n1) ;-) - Clean up .spec file a bit -* Mon Jul 16 2001 - uli@suse.de +* Mon Jul 16 2001 uli@suse.de - update memtest -> 2.7 -* Mon Apr 09 2001 - garloff@suse.de +* Mon Apr 09 2001 garloff@suse.de - memtest86: Correct units (cosmetic) -* Thu Dec 21 2000 - garloff@suse.de +* Thu Dec 21 2000 garloff@suse.de - Update memtest86 to v2.5 final. -* Wed Nov 29 2000 - garloff@suse.de +* Wed Nov 29 2000 garloff@suse.de - Update memtest86 to v2.5-beta (Athlon/Duron support) -* Mon Aug 28 2000 - garloff@suse.de +* Mon Aug 28 2000 garloff@suse.de - Added memtest86-2.4. ++++++ fix-overflows.diff ++++++ diff -urp memtest86+-2.01.mm/io.h memtest86+-2.01/io.h --- memtest86+-2.01.mm/io.h 2008-02-21 12:26:05.000000000 +0100 +++ memtest86+-2.01/io.h 2008-04-30 12:32:34.787275000 +0200 @@ -31,7 +31,7 @@ */ #define __OUT1(s,x) \ -extern inline void __out##s(unsigned x value, unsigned short port) { +static inline void __out##s(unsigned x value, unsigned short port) { #define __OUT2(s,s1,s2) \ __asm__ __volatile__ ("out" #s " %" s1 "0,%" s2 "1" @@ -43,7 +43,7 @@ __OUT1(s##_p,x) __OUT2(s,s1,"w") : : "a" __OUT1(s##c_p,x) __OUT2(s,s1,"") : : "a" (value), "id" (port)); SLOW_DOWN_IO; } #define __IN1(s) \ -extern inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v; +static inline RETURN_TYPE __in##s(unsigned short port) { RETURN_TYPE _v; #define __IN2(s,s1,s2) \ __asm__ __volatile__ ("in" #s " %" s2 "1,%" s1 "0" @@ -55,7 +55,7 @@ __IN1(s##_p) __IN2(s,s1,"w") : "=a" (_v) __IN1(s##c_p) __IN2(s,s1,"") : "=a" (_v) : "id" (port) ,##i ); SLOW_DOWN_IO; return _v; } #define __OUTS(s) \ -extern inline void outs##s(unsigned short port, const void * addr, unsigned long count) \ +static inline void outs##s(unsigned short port, const void * addr, unsigned long count) \ { __asm__ __volatile__ ("cld ; rep ; outs" #s \ : "=S" (addr), "=c" (count) : "d" (port),"0" (addr),"1" (count)); } diff -urp memtest86+-2.01.mm/test.c memtest86+-2.01/test.c --- memtest86+-2.01.mm/test.c 2008-02-21 12:26:05.000000000 +0100 +++ memtest86+-2.01/test.c 2008-04-30 14:15:56.666389000 +0200 @@ -25,6 +25,22 @@ void poll_errors(); int ecount = 0; +static inline volatile ulong * sat_add(volatile ulong *ptr, ulong i, volatile ulong *end) +{ + if ((ulong)ptr + i * sizeof(*ptr) > (ulong)ptr) + return ptr + i; + else + return end; +} + +static inline volatile ulong * sat_sub(volatile ulong *ptr, ulong i, volatile ulong *start) +{ + if ((ulong)ptr > i * sizeof(*ptr)) + return ptr - i; + else + return start; +} + static inline ulong roundup(ulong value, ulong mask) { return (value + mask) & ~mask; @@ -150,11 +166,7 @@ void addr_tst2() done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -194,11 +206,7 @@ void addr_tst2() done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -280,11 +288,7 @@ void movinvr() done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -331,11 +335,7 @@ void movinvr() done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -419,7 +419,8 @@ void movinv1(int iter, ulong p1, ulong p hprint(LINE_PAT, COL_PAT, p1); /* Initialize memory with the initial pattern. */ - for (j=0; j<segs; j++) { + for (j=0; j<segs; j++) + { start = v->map[j].start; end = v->map[j].end; pe = start; @@ -427,11 +428,7 @@ void movinv1(int iter, ulong p1, ulong p done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -440,17 +437,19 @@ void movinv1(int iter, ulong p1, ulong p if (p == pe ) { break; } -/* Original C code replaced with hand tuned assembly code - * for (; p < pe; p++) { - * *p = p1; - * } - */ +/* Original C code replaced with hand tuned assembly code */ +#if 0 + for (; p < pe; p++) { + *p = p1; + } +#else asm __volatile__ ( "rep\n\t" \ "stosl\n\t" : "=D" (p) : "c" (len), "0" (p), "a" (p1) ); +#endif do_tick(); BAILR } while (!done); @@ -460,7 +459,8 @@ void movinv1(int iter, ulong p1, ulong p * write the complement for each memory location. Test from bottom * up and then from the top down. */ for (i=0; i<iter; i++) { - for (j=0; j<segs; j++) { + for (j=0; j<segs; j++) + { start = v->map[j].start; end = v->map[j].end; pe = start; @@ -468,11 +468,7 @@ void movinv1(int iter, ulong p1, ulong p done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -480,14 +476,16 @@ void movinv1(int iter, ulong p1, ulong p if (p == pe ) { break; } -/* Original C code replaced with hand tuned assembly code - * for (; p < pe; p++) { - * if ((bad=*p) != p1) { - * error((ulong*)p, p1, bad); - * } - * *p = p2; - * } - */ +/* Original C code replaced with hand tuned assembly code */ +#if 0 + for (; p < pe; p++) { + ulong bad; + if ((bad=*p) != p1) { + error((ulong*)p, p1, bad); + } + *p = p2; + } +#else asm __volatile__ ( "jmp L2\n\t" \ @@ -522,10 +520,12 @@ void movinv1(int iter, ulong p1, ulong p : "a" (p1), "0" (p), "d" (pe), "b" (p2) : "ecx" ); +#endif do_tick(); BAILR } while (!done); } + for (j=segs-1; j>=0; j--) { start = v->map[j].start; end = v->map[j].end; @@ -534,11 +534,7 @@ void movinv1(int iter, ulong p1, ulong p done = 0; do { /* Check for underflow */ - if (pe - SPINSZ < pe) { - pe -= SPINSZ; - } else { - pe = start; - } + pe = sat_sub(pe, SPINSZ, start); if (pe <= start) { pe = start; done++; @@ -546,14 +542,16 @@ void movinv1(int iter, ulong p1, ulong p if (p == pe ) { break; } -/* Original C code replaced with hand tuned assembly code - * do { - * if ((bad=*p) != p2) { - * error((ulong*)p, p2, bad); - * } - * *p = p1; - * } while (p-- > pe); - */ +/* Original C code replaced with hand tuned assembly code */ +#if 0 + do { + ulong bad; + if ((bad=*p) != p2) { + error((ulong*)p, p2, bad); + } + *p = p1; + } while (p-- > pe); +#else asm __volatile__ ( "addl $4, %%edi\n\t" "jmp L9\n\t" @@ -590,6 +588,7 @@ void movinv1(int iter, ulong p1, ulong p : "a" (p1), "0" (p), "d" (pe), "b" (p2) : "ecx" ); +#endif do_tick(); BAILR } while (!done); @@ -623,11 +622,7 @@ void movinv32(int iter, ulong p1, ulong pat = p1; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -685,11 +680,7 @@ void movinv32(int iter, ulong p1, ulong pat = p1; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -798,11 +789,7 @@ void movinv32(int iter, ulong p1, ulong done = 0; do { /* Check for underflow */ - if (pe - SPINSZ < pe) { - pe -= SPINSZ; - } else { - pe = start; - } + pe = sat_sub(pe, SPINSZ, start); if (pe <= start) { pe = start; done++; @@ -906,11 +893,7 @@ void modtst(int offset, int iter, ulong done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -951,11 +934,7 @@ void modtst(int offset, int iter, ulong k = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; @@ -1009,11 +988,7 @@ void modtst(int offset, int iter, ulong done = 0; do { /* Check for overflow */ - if (pe + SPINSZ > pe) { - pe += SPINSZ; - } else { - pe = end; - } + pe = sat_add(pe, SPINSZ, end); if (pe >= end) { pe = end; done++; ++++++ memtest86+-1.70.tar.gz -> memtest86+-2.01.tar.gz ++++++ ++++ 4379 lines of diff (skipped) ++++++ serial-enable ++++++ --- /var/tmp/diff_new_pack.R25945/_old 2008-05-01 13:59:58.000000000 +0200 +++ /var/tmp/diff_new_pack.R25945/_new 2008-05-01 13:59:58.000000000 +0200 @@ -1,6 +1,5 @@ -diff -ur memtest86+-1.70.orig/config.h memtest86+-1.70/config.h ---- memtest86+-1.70.orig/config.h 2006-12-27 02:33:06.000000000 +0100 -+++ memtest86+-1.70/config.h 2007-01-25 16:34:01.000000000 +0100 +--- memtest86+-2.01/config.h ++++ memtest86+-2.01/config.h @@ -13,7 +13,7 @@ /* SERIAL_CONSOLE_DEFAULT - The default state of the serial console. */ /* This is normally off since it slows down testing. Change to a 1 */ @@ -8,20 +7,19 @@ -#define SERIAL_CONSOLE_DEFAULT 0 +#define SERIAL_CONSOLE_DEFAULT 1 - /* SERIAL_BAUD_RATE - Baud rate for the serial console */ - #define SERIAL_BAUD_RATE 9600 -diff -ur memtest86+-1.70.orig/init.c memtest86+-1.70/init.c ---- memtest86+-1.70.orig/init.c 2007-01-04 08:19:43.000000000 +0100 -+++ memtest86+-1.70/init.c 2007-01-25 16:34:31.000000000 +0100 -@@ -29,6 +29,7 @@ - static void cpu_type(void); + /* SERIAL_TTY - The default serial port to use. 0=ttyS0, 1=ttyS1 */ + #define SERIAL_TTY 0 +--- memtest86+-2.01/init.c ++++ memtest86+-2.01/init.c +@@ -40,6 +40,7 @@ static void cacheable(void); static int cpuspeed(void); + int beepmode; +extern short serial_cons; static void display_init(void) { -@@ -65,6 +66,9 @@ +@@ -76,6 +77,9 @@ } serial_echo_print("\x1B[0m"); @@ -31,11 +29,10 @@ } /* -diff -ur memtest86+-1.70.orig/serial.h memtest86+-1.70/serial.h ---- memtest86+-1.70.orig/serial.h 2006-12-27 02:33:06.000000000 +0100 -+++ memtest86+-1.70/serial.h 2007-01-25 16:34:31.000000000 +0100 +--- memtest86+-2.01/serial.h ++++ memtest86+-2.01/serial.h @@ -140,10 +140,12 @@ - #define serial_echo_inb(a) inb((a)+0x3f8) + #define serial_echo_inb(a) inb((a)+serial_base_ports[serial_tty]) #define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) /* Wait for transmitter & holding register to empty */ -#define WAIT_FOR_XMITR \ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de