patch-2.1.68 linux/arch/i386/kernel/vm86.c

Next file: linux/arch/i386/lib/delay.c
Previous file: linux/arch/i386/kernel/signal.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.67/linux/arch/i386/kernel/vm86.c linux/arch/i386/kernel/vm86.c
@@ -438,8 +438,13 @@
 	}
 	if (trapno !=1)
 		return 1; /* we let this handle by the calling routine */
-	if (current->flags & PF_PTRACED)
-		current->blocked &= ~(1 << (SIGTRAP-1));
+	if (current->flags & PF_PTRACED) {
+		unsigned long flags;
+		spin_lock_irqsave(&current->sigmask_lock, flags);
+		sigdelset(&current->blocked, SIGTRAP);
+		recalc_sigpending(current);
+		spin_unlock_irqrestore(&current->sigmask_lock, flags);
+	}
 	send_sig(SIGTRAP, current, 1);
 	current->tss.trap_no = trapno;
 	current->tss.error_code = error_code;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov