[PATCH] fix console change race exposed by CFS

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Jan L+APw-bbe +ADw-jluebbe+AEA-lasnet.de+AD4

The new behaviour of CFS exposes a race which occurs if a switch is
requested when vt+AF8-mode.mode is VT+AF8-PROCESS.

The process with vc-+AD4-vt+AF8-pid is signaled before vc-+AD4-vt+AF8-newvt is set. This
causes the switch to fail when triggered by the monitoing process
because the target is still -1.

Signed-off-by: Jan L+APw-bbe +ADw-jluebbe+AEA-lasnet.de+AD4
---
Index: linux-2.6.22/drivers/char/vt+AF8-ioctl.c
+AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0APQA9AD0
--- linux-2.6.22.orig/drivers/char/vt+AF8-ioctl.c
+-+-+- linux-2.6.22/drivers/char/vt+AF8-ioctl.c
+AEAAQA -1208,15 +-1208,18 +AEAAQA
 		/+ACo
 		 +ACo Send the signal as privileged - kill+AF8-pid() will
 		 +ACo tell us if the process has gone or something else
-		 +ACo is awry
+-		 +ACo is awry.
+-		 +ACo
+-		 +ACo We need to set vt+AF8-newvt +ACo-before+ACo sending the signal or we
+-		 +ACo have a race.
 		 +ACo-/
+-		vc-+AD4-vt+AF8-newvt +AD0 new+AF8-vc-+AD4-vc+AF8-num+ADs
 		if (kill+AF8-pid(vc-+AD4-vt+AF8-pid, vc-+AD4-vt+AF8-mode.relsig, 1) +AD0APQ 0) +AHs
 			/+ACo
 			 +ACo It worked. Mark the vt to switch to and
 			 +ACo return. The process needs to send us a
 			 +ACo VT+AF8-RELDISP ioctl to complete the switch.
 			 +ACo-/
-			vc-+AD4-vt+AF8-newvt +AD0 new+AF8-vc-+AD4-vc+AF8-num+ADs
 			return+ADs
 		+AH0


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux