All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]: 4/4GB:
@ 2004-11-11 16:20 Kirill Korotaev
  2004-11-12 20:22 ` Ingo Molnar
  0 siblings, 1 reply; 2+ messages in thread
From: Kirill Korotaev @ 2004-11-11 16:20 UTC (permalink / raw)
  To: linux-kernel, Ingo Molnar

[-- Attachment #1: Type: text/plain, Size: 496 bytes --]

This patch fixes exception handling in RESTORE_ALL macro on returing
to user space. Incorrect values in %ds/%es can lead to incorrect 
behaivour and iret to kernel space address. This patch moves
exception handler from .fixup section to .entry.text and makes it
to be between int80_ret_start_marker/int80_ret_end_marker markers.

Signed-Off-By: Kirill Korotaev <dev@sw.ru>

Kirill

P.S. These 4GB split patches are against modified 2.6.8.1 kernel, but 
should be appliable to last Fedora kernels

[-- Attachment #2: diff-arch-4gb-restore --]
[-- Type: text/plain, Size: 1032 bytes --]

--- ./arch/i386/kernel/entry.S.4gbrest	2004-11-10 11:21:32.000000000 +0300
+++ ./arch/i386/kernel/entry.S	2004-11-10 12:35:24.239613040 +0300
@@ -167,7 +167,7 @@ int80_ret_start_marker:					\
 	movl %edx, %esp; 				\
 	movl %ecx, %cr3;				\
 							\
-	__RESTORE_ALL;					\
+	__RESTORE_ALL_USER;				\
 int80_ret_end_marker:					\
 2:
 
@@ -204,14 +204,19 @@ int80_ret_end_marker:					\
 
 #define __RESTORE_REGS	\
 	__RESTORE_INT_REGS; \
+	popl %ds;	\
+	popl %es;
+
+#define __RESTORE_REGS_USER \
+	__RESTORE_INT_REGS; \
 111:	popl %ds;	\
 222:	popl %es;	\
-.section .fixup,"ax";	\
+	jmp 666f;	\
 444:	movl $0,(%esp);	\
 	jmp 111b;	\
 555:	movl $0,(%esp);	\
 	jmp 222b;	\
-.previous;		\
+666:			\
 .section __ex_table,"a";\
 	.align 4;	\
 	.long 111b,444b;\
@@ -220,6 +225,13 @@ int80_ret_end_marker:					\
 
 #define __RESTORE_ALL	\
 	__RESTORE_REGS	\
+	__RESTORE_IRET
+
+#define __RESTORE_ALL_USER \
+	__RESTORE_REGS_USER \
+	__RESTORE_IRET
+
+#define __RESTORE_IRET	\
 	addl $4, %esp;	\
 333:	iret;		\
 .section .fixup,"ax";   \

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2004-11-12 19:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-11 16:20 [PATCH]: 4/4GB: Kirill Korotaev
2004-11-12 20:22 ` Ingo Molnar

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.