]> git.neil.brown.name Git - history.git/commitdiff
Linux 2.2.23-rc2 2.2.23-rc2
authorAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:24:30 +0000 (15:24 -0500)
committerAlan Cox <alan@lxorguk.ukuu.org.uk>
Fri, 23 Nov 2007 20:24:30 +0000 (15:24 -0500)
o       Backport NT iret denial of service bugfix    (Marc-Christian Petersen)

Makefile
arch/i386/kernel/entry.S
arch/i386/kernel/traps.c

index a9b794b32918281b4c7bbdc56097e1830818f933..049f63540c9313df7d1b55624663707327eec4b0 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 2
 SUBLEVEL = 23
-EXTRAVERSION = -rc1
+EXTRAVERSION = -rc2
 
 ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
 
index 01adebf5d8cd3d86062fcc8d988790c39677991d..2d896e04e74f69ebe833c489d144535b960b8e9d 100644 (file)
@@ -63,7 +63,9 @@ OLDESP                = 0x34
 OLDSS          = 0x38
 
 CF_MASK                = 0x00000001
+TF_MASK                = 0x00000100
 IF_MASK                = 0x00000200
+DF_MASK                = 0x00000400
 NT_MASK                = 0x00004000
 VM_MASK                = 0x00020000
 
@@ -139,6 +141,9 @@ ENTRY(lcall7)
        movl CS(%esp),%edx      # this is eip..
        movl EFLAGS(%esp),%ecx  # and this is cs..
        movl %eax,EFLAGS(%esp)  #
+       andl $~(NT_MASK|TF_MASK|DF_MASK), %eax
+       pushl %eax
+       popfl
        movl %edx,EIP(%esp)     # Now we move them to their "normal" places
        movl %ecx,CS(%esp)      #
        movl %esp,%ebx
@@ -256,6 +261,9 @@ ENTRY(divide_error)
        pushl $ SYMBOL_NAME(do_divide_error)
        ALIGN
 error_code:
+       pushfl
+       andl $~(NT_MASK|TF_MASK|DF_MASK), (%esp)
+       popfl
        pushl %ds
        pushl %eax
        xorl %eax,%eax
@@ -266,7 +274,6 @@ error_code:
        decl %eax                       # eax = -1
        pushl %ecx
        pushl %ebx
-       cld
        movl %es,%cx
        movl ORIG_EAX(%esp), %esi       # get the error code
        movl ES(%esp), %edi             # get the function address
index 45bee853ecf37d9b564f79e8fb3378cbb7803ed6..8f3935e167af6bbe44bfb8432786e4afc7cdc4fa 100644 (file)
@@ -419,7 +419,7 @@ clear_dr7:
        return;
 
 clear_TF:
-       regs->eflags &= ~TF_MASK;
+       regs->eflags &= ~(TF_MASK|NT_MASK);
        return;
 }