rpms/kernel/devel kernel.spec, 1.148, 1.149 linux-2.6-execshield.patch, 1.71, 1.72

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Thu Sep 6 17:35:00 UTC 2007


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv24459

Modified Files:
	kernel.spec linux-2.6-execshield.patch 
Log Message:
* Thu Sep 06 2007 Chuck Ebbert <cebbert at redhat.com>
- exec-shield: enable interrupts in do_iret_error()



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -r1.148 -r1.149
--- kernel.spec	5 Sep 2007 19:43:23 -0000	1.148
+++ kernel.spec	6 Sep 2007 17:34:27 -0000	1.149
@@ -1782,6 +1782,9 @@
 
 
 %changelog
+* Thu Sep 06 2007 Chuck Ebbert <cebbert at redhat.com>
+- exec-shield: enable interrupts in do_iret_error()
+
 * Wed Sep 05 2007 Chuck Ebbert <cebbert at redhat.com>
 - 2.6.23-rc5-git1
 

linux-2.6-execshield.patch:

Index: linux-2.6-execshield.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-execshield.patch,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- linux-2.6-execshield.patch	3 Aug 2007 16:45:32 -0000	1.71
+++ linux-2.6-execshield.patch	6 Sep 2007 17:34:27 -0000	1.72
@@ -367,7 +367,7 @@
  	 * Walk the list again, actually closing and freeing it,
 --- linux-2.6.22.noarch/arch/i386/kernel/traps.c~	2007-07-20 13:50:07.000000000 -0400
 +++ linux-2.6.22.noarch/arch/i386/kernel/traps.c	2007-07-20 13:52:09.000000000 -0400
-@@ -573,7 +573,84 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
+@@ -573,7 +573,88 @@ DO_ERROR(10, SIGSEGV, "invalid TSS", inv
  DO_ERROR(11, SIGBUS,  "segment not present", segment_not_present)
  DO_ERROR(12, SIGBUS,  "stack segment", stack_segment)
  DO_ERROR_INFO(17, SIGBUS, "alignment check", alignment_check, BUS_ADRALN, 0, 0)
@@ -429,14 +429,18 @@
 + * The fixup code for errors in iret jumps to here (iret_exc).  It loses
 + * the original trap number and error code.  The bogus trap 32 and error
 + * code 0 are what the vanilla kernel delivers via:
-+ * DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0)
++ * DO_ERROR_INFO(32, SIGSEGV, "iret exception", iret_error, ILL_BADSTK, 0, 1)
++ *
++ * NOTE: Because of the final "1" in the macro we need to enable interrupts.
 + *
 + * In case of a general protection fault in the iret instruction, we
 + * need to check for a lazy CS update for exec-shield.
 + */
 +fastcall void do_iret_error(struct pt_regs *regs, long error_code)
 +{
-+	int ok = check_lazy_exec_limit(get_cpu(), regs, error_code);
++	int ok;
++	local_irq_enable();
++	ok = check_lazy_exec_limit(get_cpu(), regs, error_code);
 +	put_cpu();
 +	if (!ok && notify_die(DIE_TRAP, "iret exception", regs,
 +	    error_code, 32, SIGSEGV) != NOTIFY_STOP) {




More information about the fedora-extras-commits mailing list