Skip to contentSkip to conversation

patch ia32 mode [Threads don't wake up in ia32 mode]

Linux-ia64 Jose Luu 2 participants 2 messages Jul 26, 2001 – Jul 31, 2001

lore
Share & tools
lore

Jose Luu

author
#0 lore raw

This is the solution to the problem I described in june,

see test case there:
https://external-lists.valinux.com/archives//linux-ia64/2001-June/001792.htm
l

There was an oversight on the size of the long, which caused an improper restoration of the real time signals blocking mask of the 32 bit frame, 2 of these signals are used by the pthreads library for wakeup or cancellation.

This patch can be applied to all 2.4.x series kernels including 2.4.7, since the file has not changed.

Jose

arch/ia64/ia32/ia32_signal.c Thu Jul 26 12:49:42 2001 renamed from arch/ia64/ia32/ia32_signal.c Tue Oct 10 02:54:53 2000 +0 -0
@@ -279,7 +279,7 @@
        err |= setup_sigcontext_ia32(&frame->sc, &frame->fpstate, regs,

set->sig[0]);

        if (_IA32_NSIG_WORDS > 1) {
-               err |= __copy_to_user(frame->extramask, &set->sig[1],
+               err |= __copy_to_user(frame->extramask,(((char *) &set->sig)
+ 4) ,
                                      sizeof(frame->extramask));
        }
#1 lore raw

This patch looks correct to me, so I applied. Don, speak up if you object...

	--david
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Jose Luu

Jose> This is the solution to the problem I described in june,

Jose> see test case there:
Jose> https://external-lists.valinux.com/archives//linux-ia64/2001-June/001792.htm
Jose> l

Jose> There was an oversight on the size of the long, which caused Jose> an improper restoration of the real time signals blocking mask Jose> of the 32 bit frame, 2 of these signals are used by the Jose> pthreads library for wakeup or cancellation.

Jose> This patch can be applied to all 2.4.x series kernels Jose> including 2.4.7, since the file has not changed.

Jose> Jose

Jose> --- 2.4.5/arch/ia64/ia32/ia32_signal.c Tue Oct 10 02:54:53
Jose> 2000 +++ new-2.4.5/arch/ia64/ia32/ia32_signal.c Thu Jul 26
Jose> 12:49:42 2001 @@ -279,7 +279,7 @@ err | Jose> setup_sigcontext_ia32(&frame->sc, &frame->fpstate, regs, set-> sig[0]);

Jose> if (_IA32_NSIG_WORDS > 1) { - err | Jose> __copy_to_user(frame->extramask, &set->sig[1], + err | Jose> __copy_to_user(frame->extramask,(((char *) &set->sig) + 4) ,
Jose> sizeof(frame->extramask)); }

Jose> _______________________________________________ Linux-IA64 Jose> mailing list [email protected]
Jose> http://lists.linuxia64.org/lists/listinfo/linux-ia64