rpms/kernel/devel linux-2.6-x86-fix-sigcontext-user-export.patch, NONE, 1.1 kernel.spec, 1.422, 1.423

Kyle McMartin (kyle) fedora-extras-commits at redhat.com
Wed Feb 13 21:57:05 UTC 2008


Author: kyle

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

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-x86-fix-sigcontext-user-export.patch 
Log Message:
* Wed Feb 13 2008 Kyle McMartin <kmcmartin at redhat.com>
- Added patch from Jakub to fix sigcontext.h export on x86.


linux-2.6-x86-fix-sigcontext-user-export.patch:

--- NEW FILE linux-2.6-x86-fix-sigcontext-user-export.patch ---
From: Ingo Molnar <mingo at elte.hu>
Date: Wed, 13 Feb 2008 15:47:45 +0000 (+0100)
Subject: x86: fix sigcontext.h user export
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fx86%2Flinux-2.6-x86.git;a=commitdiff_plain;h=889fec7faa2570b1467dfa5ee444f92eaf1dfc14

x86: fix sigcontext.h user export

Jakub Jelinek reported that some user-space code that relies on
kernel headers has built dependency on the sigcontext->eip/rip
register names - which have been unified in commit:

  commit 742fa54a62be6a263df14a553bf832724471dfbe
  Author: H. Peter Anvin <hpa at zytor.com>
  Date:   Wed Jan 30 13:30:56 2008 +0100

      x86: use generic register names in struct sigcontext

so give the old layout to user-space. This is not particularly
pretty, but it's an ABI so there's no danger of the two definitions
getting out of sync.

Reported-by: Jakub Jelinek <jakub at redhat.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/include/asm-x86/sigcontext.h b/include/asm-x86/sigcontext.h
index 681dead..d743947 100644
--- a/include/asm-x86/sigcontext.h
+++ b/include/asm-x86/sigcontext.h
@@ -58,6 +58,7 @@ struct _fpstate {
 
 #define X86_FXSR_MAGIC		0x0000
 
+#ifdef __KERNEL__
 struct sigcontext {
 	unsigned short gs, __gsh;
 	unsigned short fs, __fsh;
@@ -82,6 +83,35 @@ struct sigcontext {
 	unsigned long oldmask;
 	unsigned long cr2;
 };
+#else /* __KERNEL__ */
+/*
+ * User-space might still rely on the old definition:
+ */
+struct sigcontext {
+	unsigned short gs, __gsh;
+	unsigned short fs, __fsh;
+	unsigned short es, __esh;
+	unsigned short ds, __dsh;
+	unsigned long edi;
+	unsigned long esi;
+	unsigned long ebp;
+	unsigned long esp;
+	unsigned long ebx;
+	unsigned long edx;
+	unsigned long ecx;
+	unsigned long eax;
+	unsigned long trapno;
+	unsigned long err;
+	unsigned long eip;
+	unsigned short cs, __csh;
+	unsigned long eflags;
+	unsigned long esp_at_signal;
+	unsigned short ss, __ssh;
+	struct _fpstate __user * fpstate;
+	unsigned long oldmask;
+	unsigned long cr2;
+};
+#endif /* !__KERNEL__ */
 
 #else /* __i386__ */
 
@@ -102,6 +132,7 @@ struct _fpstate {
 	__u32	reserved2[24];
 };
 
+#ifdef __KERNEL__
 struct sigcontext {
 	unsigned long r8;
 	unsigned long r9;
@@ -132,6 +163,41 @@ struct sigcontext {
 	struct _fpstate __user *fpstate;	/* zero when no FPU context */
 	unsigned long reserved1[8];
 };
+#else /* __KERNEL__ */
+/*
+ * User-space might still rely on the old definition:
+ */
+struct sigcontext {
+	unsigned long r8;
+	unsigned long r9;
+	unsigned long r10;
+	unsigned long r11;
+	unsigned long r12;
+	unsigned long r13;
+	unsigned long r14;
+	unsigned long r15;
+	unsigned long rdi;
+	unsigned long rsi;
+	unsigned long rbp;
+	unsigned long rbx;
+	unsigned long rdx;
+	unsigned long rax;
+	unsigned long rcx;
+	unsigned long rsp;
+	unsigned long rip;
+	unsigned long eflags;		/* RFLAGS */
+	unsigned short cs;
+	unsigned short gs;
+	unsigned short fs;
+	unsigned short __pad0;
+	unsigned long err;
+	unsigned long trapno;
+	unsigned long oldmask;
+	unsigned long cr2;
+	struct _fpstate __user *fpstate;	/* zero when no FPU context */
+	unsigned long reserved1[8];
+};
+#endif /* !__KERNEL__ */
 
 #endif /* !__i386__ */
 


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.422
retrieving revision 1.423
diff -u -r1.422 -r1.423
--- kernel.spec	13 Feb 2008 19:43:25 -0000	1.422
+++ kernel.spec	13 Feb 2008 21:56:26 -0000	1.423
@@ -550,11 +550,11 @@
 # stable release candidate
 # Patch03: patch-2.6.24.1-rc1.bz2
 
-Patch05: linux-2.6-cve-2008-0600.patch
-
 # we always need nonintconfig, even for -vanilla kernels
 Patch06: linux-2.6-build-nonintconfig.patch
 
+Patch07: linux-2.6-x86-fix-sigcontext-user-export.patch
+
 %if !%{nopatches}
 
 Patch10: linux-2.6-hotfixes.patch
@@ -972,6 +972,7 @@
 %if !%{nopatches}
 
 ApplyPatch linux-2.6-hotfixes.patch
+ApplyPatch linux-2.6-x86-fix-sigcontext-user-export.patch
 
 # Roland's utrace ptrace replacement.
 # Main patch includes i386, x86_64, powerpc.
@@ -1742,6 +1743,9 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
+* Wed Feb 13 2008 Kyle McMartin <kmcmartin at redhat.com>
+- Added patch from Jakub to fix sigcontext.h export on x86.
+
 * Wed Feb 13 2008 Dennis Gilmore <dennis at ausil.us>
 - build headers on sparc64 because the buildsys needs them
 




More information about the fedora-extras-commits mailing list