rpms/kernel/F-9 linux-2.6-x86-dont-map-vdso-when-disabled.patch, NONE, 1.1 linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch, NONE, 1.1 linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch, NONE, 1.1 linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch, NONE, 1.1 kernel.spec, 1.645, 1.646

Chuck Ebbert (cebbert) fedora-extras-commits at redhat.com
Tue May 20 07:16:34 UTC 2008


Author: cebbert

Update of /cvs/pkgs/rpms/kernel/F-9
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv6335

Modified Files:
	kernel.spec 
Added Files:
	linux-2.6-x86-dont-map-vdso-when-disabled.patch 
	linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch 
	linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch 
	linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch 
Log Message:
* Tue May 20 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25.4-27
- x86: don't map VDSO into userspace when it's disabled (#229304)
- x86: fix ASM constraint in do_IRQ()
- x86: map PCI ROM by default again (F8 #440644)


linux-2.6-x86-dont-map-vdso-when-disabled.patch:

--- NEW FILE linux-2.6-x86-dont-map-vdso-when-disabled.patch ---
From: Roland McGrath <roland at redhat.com>
Date: Wed, 9 Apr 2008 08:30:06 +0000 (-0700)
Subject: x86 vDSO: don't map 32-bit vdso when disabled
X-Git-Tag: v2.6.26-rc1~1154^2~608
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=5de253cc5b1f565f7aeb5bacd67bac37e943ceef

x86 vDSO: don't map 32-bit vdso when disabled

We map a VMA for the 32-bit vDSO even when it's disabled, which is stupid.
For the 32-bit kernel it's the vdso_enabled boot parameter/sysctl
and for the 64-bit kernel it's the vdso32 boot parameter/syscall32 sysctl.

When it's disabled, we don't pass AT_SYSINFO_EHDR so processes don't use
the vDSO for anything, but we still map it.  For the non-compat vDSO,
this means we're always putting an extra VMA somewhere, maybe lousing
up the control of the address space the user was hoping for.

Honor the setting by doing nothing in arch_setup_additional_pages.

[ also see: "x86 vDSO: don't use disabled vDSO for signal trampoline" ]

Signed-off-by: Roland McGrath <roland at redhat.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/arch/x86/vdso/vdso32-setup.c b/arch/x86/vdso/vdso32-setup.c
index 348f134..f7e78d8 100644
--- a/arch/x86/vdso/vdso32-setup.c
+++ b/arch/x86/vdso/vdso32-setup.c
@@ -325,6 +325,9 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int exstack)
 	int ret = 0;
 	bool compat;
 
+	if (vdso_enabled == VDSO_DISABLED)
+		return 0;
+
 	down_write(&mm->mmap_sem);
 
 	/* Test compat mode once here, in case someone

linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch:

--- NEW FILE linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch ---
From: Roland McGrath <roland at redhat.com>
Date: Wed, 9 Apr 2008 08:29:27 +0000 (-0700)
Subject: x86 vDSO: don't use disabled vDSO for signal trampoline
X-Git-Tag: v2.6.26-rc1~1154^2~609
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=1a3e4ca41c5a38975023a6e8831c309d3322889c

x86 vDSO: don't use disabled vDSO for signal trampoline

If the vDSO was not mapped, don't use it as the "restorer" for a signal
handler.  Whether we have a pointer in mm->context.vdso depends on what
happened at exec time, so we shouldn't check any global flags now.

Background:

Currently, every 32-bit exec gets the vDSO mapped even if it's disabled
(the process just doesn't get told about it).  Because it's in fact
always there, the bug that this patch fixes cannot happen now.  With
the second patch, it won't be mapped at all when it's disabled, which is
one of the things that people might really want when they disable it (so
nothing they didn't ask for goes into their address space).

The 32-bit signal handler setup when SA_RESTORER is not used refers to
current->mm->context.vdso without regard to whether the vDSO has been
disabled when the process was exec'd.  This patch fixes this not to use
it when it's null, which becomes possible after the second patch. (This
never happens in normal use, because glibc's sigaction call uses
SA_RESTORER unless glibc detected the vDSO.)

Signed-off-by: Roland McGrath <roland at redhat.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c
index 5e7771a..05e155d 100644
--- a/arch/x86/ia32/ia32_signal.c
+++ b/arch/x86/ia32/ia32_signal.c
@@ -468,7 +468,7 @@ int ia32_setup_frame(int sig, struct k_sigaction *ka,
 		restorer = ka->sa.sa_restorer;
 	} else {
 		/* Return stub is in 32bit vsyscall page */
-		if (current->binfmt->hasvdso)
+		if (current->mm->context.vdso)
 			restorer = VDSO32_SYMBOL(current->mm->context.vdso,
 						 sigreturn);
 		else
diff --git a/arch/x86/kernel/signal_32.c b/arch/x86/kernel/signal_32.c
index 0157a6f..011c62f 100644
--- a/arch/x86/kernel/signal_32.c
+++ b/arch/x86/kernel/signal_32.c
@@ -365,7 +365,7 @@ static int setup_frame(int sig, struct k_sigaction *ka,
 			goto give_sigsegv;
 	}
 
-	if (current->binfmt->hasvdso)
+	if (current->mm->context.vdso)
 		restorer = VDSO32_SYMBOL(current->mm->context.vdso, sigreturn);
 	else
 		restorer = &frame->retcode;

linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch:

--- NEW FILE linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch ---
From: Jan Beulich <jbeulich at novell.com>
Date: Tue, 22 Apr 2008 15:16:50 +0000 (+0100)
Subject: i386: fix asm constraint in do_IRQ()
X-Git-Tag: v2.6.26-rc1~1045^2~27
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=5065dbafc299507f16731434e95b91dadff03006

i386: fix asm constraint in do_IRQ()

Two prior changes resulted in the "ecx" clobber being lost.

Signed-off-by: Jan Beulich <jbeulich at novell.com>
Signed-off-by: Ingo Molnar <mingo at elte.hu>
---

diff --git a/arch/x86/kernel/irq_32.c b/arch/x86/kernel/irq_32.c
index 6ea67b7..00bda7b 100644
--- a/arch/x86/kernel/irq_32.c
+++ b/arch/x86/kernel/irq_32.c
@@ -134,7 +134,7 @@ unsigned int do_IRQ(struct pt_regs *regs)
 			: "=a" (arg1), "=d" (arg2), "=b" (bx)
 			:  "0" (irq),   "1" (desc),  "2" (isp),
 			   "D" (desc->handle_irq)
-			: "memory", "cc"
+			: "memory", "cc", "ecx"
 		);
 	} else
 #endif

linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch:

--- NEW FILE linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch ---
From: Linus Torvalds <torvalds at linux-foundation.org>
Date: Fri, 9 May 2008 01:41:48 +0000 (-0700)
Subject: Revert "PCI: remove default PCI expansion ROM memory allocation"
X-Git-Tag: v2.6.26-rc2~25
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=8d539108560ec121d59eee05160236488266221c

Revert "PCI: remove default PCI expansion ROM memory allocation"

This reverts commit 9f8daccaa05c14e5643bdd4faf5aed9cc8e6f11e, which was
reported to break X startup (xf86-video-ati-6.8.0). See

	http://bugs.freedesktop.org/show_bug.cgi?id=15523

for details.

Reported-by: Laurence Withers <l at lwithers.me.uk>
Cc: Gary Hade <garyhade at us.ibm.com>
Cc: Greg KH <greg at kroah.com>
Cc: Jan Beulich <jbeulich at novell.com>
Cc: "Jun'ichi Nomura" <j-nomura at ce.jp.nec.com>
Cc: Andrew Morton <akpm at linux-foundation.org>
Cc: Ingo Molnar <mingo at elte.hu>
Cc: Thomas Gleixner <tglx at linutronix.de>
Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
---
[cebbert at redhat.com: backport, remove first hunk to make port easier]

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -141,12 +128,8 @@ void __init dmi_check_skip_isa_align(void)
 
 void __devinit  pcibios_fixup_bus(struct pci_bus *b)
 {
-	struct pci_dev *dev;
-
 	pcibios_fixup_ghosts(b);
 	pci_read_bridge_bases(b);
-	list_for_each_entry(dev, &b->devices, bus_list)
-		pcibios_fixup_device_resources(dev);
 }
 
 /*


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-9/kernel.spec,v
retrieving revision 1.645
retrieving revision 1.646
diff -u -r1.645 -r1.646
--- kernel.spec	19 May 2008 22:17:11 -0000	1.645
+++ kernel.spec	20 May 2008 07:15:46 -0000	1.646
@@ -575,6 +575,10 @@
 Patch42: linux-2.6-x86-tune-generic.patch
 Patch75: linux-2.6-x86-debug-boot.patch
 Patch80: linux-2.6-smp-boot-delay.patch
+Patch85: linux-2.6-x86-dont-map-vdso-when-disabled.patch
+Patch86: linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch
+Patch87: linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch
+Patch88: linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch
 
 Patch123: linux-2.6-ppc-rtc.patch
 Patch140: linux-2.6-ps3-ehci-iso.patch
@@ -1023,6 +1027,13 @@
 ApplyPatch linux-2.6-x86-tune-generic.patch
 # Delay longer during boot on x86 while waiting for secondary processors
 ApplyPatch linux-2.6-smp-boot-delay.patch
+# don't map or use disabled x86 vdso
+ApplyPatch linux-2.6-x86-dont-map-vdso-when-disabled.patch
+ApplyPatch linux-2.6-x86-dont-use-disabled-vdso-for-signals.patch
+# ecx is clobbered during IRQs (!)
+ApplyPatch linux-2.6-x86-fix-asm-constraint-in-do_IRQ.patch
+# allocate PCI ROM by default again
+ApplyPatch linux-2.6-x86-pci-revert-remove-default-rom-allocation.patch
 
 #
 # PowerPC
@@ -1806,6 +1817,11 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL}.xen -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.xen.conf %{with_xen} xen
 
 %changelog
+* Tue May 20 2008 Chuck Ebbert <cebbert at redhat.com> 2.6.25.4-27
+- x86: don't map VDSO into userspace when it's disabled (#229304)
+- x86: fix ASM constraint in do_IRQ()
+- x86: map PCI ROM by default again (F8 #440644)
+
 * Mon May 19 2008 John W. Linville <linville at redhat.com> 2.6.25.4-26
 - Re-sync wireless bits w/ current upstream
 




More information about the fedora-extras-commits mailing list