]> git.hungrycats.org Git - linux/commitdiff
[PATCH] ia64: don't touch IA-32 segment descriptors too early
authorArun Sharma <arun.sharma@intel.com>
Wed, 22 Oct 2003 09:49:38 +0000 (02:49 -0700)
committerDavid Mosberger <davidm@tiger.hpl.hp.com>
Wed, 22 Oct 2003 09:49:38 +0000 (02:49 -0700)
Without this patch, if a signal handler tried to access TLS data (via %gs), things break, because the GS descriptor is zero.

To be compatible with i386, we shouldn't be touching the segment descriptors
before getting into signal handlers.

arch/ia64/ia32/ia32_signal.c

index aba19859d2f7d2d70364ca7a9cea7b5b89a931a6..82d929427b9206c375c2b75a354c87bab0ed0e7b 100644 (file)
@@ -877,8 +877,6 @@ setup_frame_ia32 (int sig, struct k_sigaction *ka, sigset_t *set, struct pt_regs
        regs->cr_iip = IA32_SA_HANDLER(ka);
 
        set_fs(USER_DS);
-       regs->r16 = (__USER_DS << 16) |  (__USER_DS); /* ES == DS, GS, FS are zero */
-       regs->r17 = (__USER_DS << 16) | __USER_CS;
 
 #if 0
        regs->eflags &= ~TF_MASK;
@@ -950,9 +948,6 @@ setup_rt_frame_ia32 (int sig, struct k_sigaction *ka, siginfo_t *info,
 
        set_fs(USER_DS);
 
-       regs->r16 = (__USER_DS << 16) |  (__USER_DS); /* ES == DS, GS, FS are zero */
-       regs->r17 = (__USER_DS << 16) | __USER_CS;
-
 #if 0
        regs->eflags &= ~TF_MASK;
 #endif