patch-2.1.6 linux/arch/i386/kernel/signal.c
Next file: linux/arch/i386/kernel/sys_i386.c
Previous file: linux/arch/i386/kernel/setup.c
Back to the patch index
Back to the overall index
- Lines: 28
- Date:
Mon Oct 28 22:23:05 1996
- Orig file:
v2.1.5/linux/arch/i386/kernel/signal.c
- Orig date:
Wed Oct 16 10:48:06 1996
diff -u --recursive --new-file v2.1.5/linux/arch/i386/kernel/signal.c linux/arch/i386/kernel/signal.c
@@ -15,7 +15,7 @@
#include <linux/ptrace.h>
#include <linux/unistd.h>
-#include <asm/segment.h>
+#include <asm/uaccess.h>
#define _S(nr) (1<<((nr)-1))
@@ -181,7 +181,8 @@
/* set up the "normal" stack seen by the signal handler (iBCS2) */
#define __CODE ((unsigned long)(frame+24))
#define CODE(x) ((unsigned long *) ((x)+__CODE))
- put_user(__CODE,frame);
+ if (put_user(__CODE,frame))
+ do_exit(SIGSEGV);
if (current->exec_domain && current->exec_domain->signal_invmap)
put_user(current->exec_domain->signal_invmap[signr], frame+1);
else
@@ -189,7 +190,7 @@
{
unsigned int tmp = 0;
#define PUT_SEG(seg, mem) \
-__asm__("mov %%" #seg",%w0":"=r" (tmp):"0" (tmp)); *(mem) = tmp;
+__asm__("mov %%" #seg",%w0":"=r" (tmp):"0" (tmp)); put_user(tmp,mem);
PUT_SEG(gs, frame+2);
PUT_SEG(fs, frame+3);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov