patch-2.3.39 linux/kernel/signal.c

Next file: linux/kernel/sys.c
Previous file: linux/kernel/ksyms.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.38/linux/kernel/signal.c linux/kernel/signal.c
@@ -12,6 +12,7 @@
 #include <linux/smp_lock.h>
 #include <linux/init.h>
 #include <linux/sched.h>
+#include <linux/highuid.h>
 
 #include <asm/uaccess.h>
 
@@ -143,6 +144,7 @@
 			info->si_code = 0;
 			info->si_pid = 0;
 			info->si_uid = 0;
+			SET_UID16(info->si_uid16, 0);
 		} else {
 			struct signal_queue *q, **pp;
 			pp = &current->sigqueue;
@@ -178,6 +180,7 @@
 				info->si_code = 0;
 				info->si_pid = 0;
 				info->si_uid = 0;
+				SET_UID16(info->si_uid16, 0);
 			}
 		}
 
@@ -340,6 +343,7 @@
 				q->info.si_code = SI_USER;
 				q->info.si_pid = current->pid;
 				q->info.si_uid = current->uid;
+				SET_UID16(q->info.si_uid16, current->uid);
 				break;
 			case 1:
 				q->info.si_signo = sig;
@@ -347,6 +351,7 @@
 				q->info.si_code = SI_KERNEL;
 				q->info.si_pid = 0;
 				q->info.si_uid = 0;
+				SET_UID16(q->info.si_uid16, 0);
 				break;
 			default:
 				q->info = *info;
@@ -729,11 +734,12 @@
 
 	if (copy_from_user(&these, uthese, sizeof(these)))
 		return -EFAULT;
-	else {
-		/* Invert the set of allowed signals to get those we
-		   want to block.  */
-		signotset(&these);
-	}
+		
+	/*
+	 * Invert the set of allowed signals to get those we
+	 * want to block.
+	 */
+	signotset(&these);
 
 	if (uts) {
 		if (copy_from_user(&ts, uts, sizeof(ts)))
@@ -795,6 +801,7 @@
 	info.si_code = SI_USER;
 	info.si_pid = current->pid;
 	info.si_uid = current->uid;
+	SET_UID16(info.si_uid16, current->uid);
 
 	return kill_something_info(sig, &info, pid);
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)