debian/patches: Remove deprecated and merged patches.

svn path=/dists/trunk/linux-2.6/; revision=13355
This commit is contained in:
Bastian Blank 2009-04-06 10:54:49 +00:00
parent 3628847498
commit 614815ee15
5 changed files with 0 additions and 449 deletions

View File

@ -1,113 +0,0 @@
From 3d6e48f43340343d97839eadb1ab7b6a3ea98797 Mon Sep 17 00:00:00 2001
From: Jarod Wilson <jwilson@redhat.com>
Date: Tue, 9 Sep 2008 12:38:56 +0200
Subject: S390: CVE-2008-1514: prevent ptrace padding area read/write in 31-bit mode
From: Jarod Wilson <jwilson@redhat.com>
commit 3d6e48f43340343d97839eadb1ab7b6a3ea98797 upstream
When running a 31-bit ptrace, on either an s390 or s390x kernel,
reads and writes into a padding area in struct user_regs_struct32
will result in a kernel panic.
This is also known as CVE-2008-1514.
Test case available here:
http://sources.redhat.com/cgi-bin/cvsweb.cgi/~checkout~/tests/ptrace-tests/tests/user-area-padding.c?cvsroot=systemtap
Steps to reproduce:
1) wget the above
2) gcc -o user-area-padding-31bit user-area-padding.c -Wall -ggdb2 -D_GNU_SOURCE -m31
3) ./user-area-padding-31bit
<panic>
Test status
-----------
Without patch, both s390 and s390x kernels panic. With patch, the test case,
as well as the gdb testsuite, pass without incident, padding area reads
returning zero, writes ignored.
Nb: original version returned -EINVAL on write attempts, which broke the
gdb test and made the test case slightly unhappy, Jan Kratochvil suggested
the change to return 0 on write attempts.
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Tested-by: Jan Kratochvil <jan.kratochvil@redhat.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Moritz Muehlenhoff <jmm@debian.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/s390/kernel/compat_ptrace.h | 1 +
arch/s390/kernel/ptrace.c | 28 ++++++++++++++++++++++++++++
2 files changed, 29 insertions(+)
--- a/arch/s390/kernel/compat_ptrace.h
+++ b/arch/s390/kernel/compat_ptrace.h
@@ -42,6 +42,7 @@ struct user_regs_struct32
u32 gprs[NUM_GPRS];
u32 acrs[NUM_ACRS];
u32 orig_gpr2;
+ /* nb: there's a 4-byte hole here */
s390_fp_regs fp_regs;
/*
* These per registers are in here so that gdb can modify them
--- a/arch/s390/kernel/ptrace.c
+++ b/arch/s390/kernel/ptrace.c
@@ -177,6 +177,13 @@ peek_user(struct task_struct *child, add
*/
tmp = (addr_t) task_pt_regs(child)->orig_gpr2;
+ } else if (addr < (addr_t) &dummy->regs.fp_regs) {
+ /*
+ * prevent reads of padding hole between
+ * orig_gpr2 and fp_regs on s390.
+ */
+ tmp = 0;
+
} else if (addr < (addr_t) (&dummy->regs.fp_regs + 1)) {
/*
* floating point regs. are stored in the thread structure
@@ -268,6 +275,13 @@ poke_user(struct task_struct *child, add
*/
task_pt_regs(child)->orig_gpr2 = data;
+ } else if (addr < (addr_t) &dummy->regs.fp_regs) {
+ /*
+ * prevent writes of padding hole between
+ * orig_gpr2 and fp_regs on s390.
+ */
+ return 0;
+
} else if (addr < (addr_t) (&dummy->regs.fp_regs + 1)) {
/*
* floating point regs. are stored in the thread structure
@@ -409,6 +423,13 @@ peek_user_emu31(struct task_struct *chil
*/
tmp = *(__u32*)((addr_t) &task_pt_regs(child)->orig_gpr2 + 4);
+ } else if (addr < (addr_t) &dummy32->regs.fp_regs) {
+ /*
+ * prevent reads of padding hole between
+ * orig_gpr2 and fp_regs on s390.
+ */
+ tmp = 0;
+
} else if (addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
/*
* floating point regs. are stored in the thread structure
@@ -488,6 +509,13 @@ poke_user_emu31(struct task_struct *chil
*/
*(__u32*)((addr_t) &task_pt_regs(child)->orig_gpr2 + 4) = tmp;
+ } else if (addr < (addr_t) &dummy32->regs.fp_regs) {
+ /*
+ * prevent writess of padding hole between
+ * orig_gpr2 and fp_regs on s390.
+ */
+ return 0;
+
} else if (addr < (addr_t) (&dummy32->regs.fp_regs + 1)) {
/*
* floating point regs. are stored in the thread structure

View File

@ -1,148 +0,0 @@
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date: Tue, 14 Oct 2008 23:01:03 +0000 (-0600)
Subject: x86: register a platform RTC device if PNP doesn't describe it
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=758a7f7bb86b520aadc484f23da85e547b3bf3d8
x86: register a platform RTC device if PNP doesn't describe it
Most if not all x86 platforms have an RTC device, but sometimes the RTC
is not exposed as a PNP0b00/PNP0b01/PNP0b02 device in PNPBIOS or ACPI:
http://bugzilla.kernel.org/show_bug.cgi?id=11580
https://bugzilla.redhat.com/show_bug.cgi?id=451188
It's best if we can discover the RTC via PNP because then we know
which flavor of device it is, where it lives, and which IRQ it uses.
But if we can't, we should register a platform device using the
compiled-in RTC_PORT/RTC_IRQ resource assumptions.
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Reported-by: Rik Theys <rik.theys@esat.kuleuven.be>
Reported-by: shr_msn@yahoo.com.tw
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
diff --git a/arch/x86/kernel/rtc.c b/arch/x86/kernel/rtc.c
index 05191bb..0a23b57 100644
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -223,11 +223,25 @@ static struct platform_device rtc_device = {
static __init int add_rtc_cmos(void)
{
#ifdef CONFIG_PNP
- if (!pnp_platform_devices)
- platform_device_register(&rtc_device);
-#else
+ static const char *ids[] __initconst =
+ { "PNP0b00", "PNP0b01", "PNP0b02", };
+ struct pnp_dev *dev;
+ struct pnp_id *id;
+ int i;
+
+ pnp_for_each_dev(dev) {
+ for (id = dev->id; id; id = id->next) {
+ for (i = 0; i < ARRAY_SIZE(ids); i++) {
+ if (compare_pnp_id(id, ids[i]) != 0)
+ return 0;
+ }
+ }
+ }
+#endif
+
platform_device_register(&rtc_device);
-#endif /* CONFIG_PNP */
+ dev_info(&rtc_device.dev,
+ "registered platform RTC device (no PNP device found)\n");
return 0;
}
device_initcall(add_rtc_cmos);
From: Bjorn Helgaas <bjorn.helgaas@hp.com>
Date: Tue, 14 Oct 2008 23:01:59 +0000 (-0600)
Subject: rtc-cmos: look for PNP RTC first, then for platform RTC
X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git;a=commitdiff_plain;h=72f22b1eb6ca5e4676a632a04d40d46cb61d4562
rtc-cmos: look for PNP RTC first, then for platform RTC
We shouldn't rely on "pnp_platform_devices" to tell us whether there
is a PNP RTC device.
I introduced "pnp_platform_devices", but I think it was a mistake.
All it tells us is whether we found any PNPBIOS or PNPACPI devices.
Many machines have some PNP devices, but do not describe the RTC
via PNP. On those machines, we need to do the platform driver probe
to find the RTC.
We should just register the PNP driver and see whether it claims anything.
If we don't find a PNP RTC, fall back to the platform driver probe.
This (in conjunction with the arch/x86/kernel/rtc.c patch to add
a platform RTC device when PNP doesn't have one) should resolve
these issues:
http://bugzilla.kernel.org/show_bug.cgi?id=11580
https://bugzilla.redhat.com/show_bug.cgi?id=451188
Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: David Brownell <dbrownell@users.sourceforge.net>
Reported-by: Rik Theys <rik.theys@esat.kuleuven.be>
Reported-by: shr_msn@yahoo.com.tw
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c
index 6778f82..963ad0b 100644
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -1120,29 +1120,32 @@ static struct platform_driver cmos_platform_driver = {
static int __init cmos_init(void)
{
+ int retval = 0;
+
#ifdef CONFIG_PNP
- if (pnp_platform_devices)
- return pnp_register_driver(&cmos_pnp_driver);
- else
- return platform_driver_probe(&cmos_platform_driver,
- cmos_platform_probe);
-#else
- return platform_driver_probe(&cmos_platform_driver,
- cmos_platform_probe);
-#endif /* CONFIG_PNP */
+ pnp_register_driver(&cmos_pnp_driver);
+#endif
+
+ if (!cmos_rtc.dev)
+ retval = platform_driver_probe(&cmos_platform_driver,
+ cmos_platform_probe);
+
+ if (retval == 0)
+ return 0;
+
+#ifdef CONFIG_PNP
+ pnp_unregister_driver(&cmos_pnp_driver);
+#endif
+ return retval;
}
module_init(cmos_init);
static void __exit cmos_exit(void)
{
#ifdef CONFIG_PNP
- if (pnp_platform_devices)
- pnp_unregister_driver(&cmos_pnp_driver);
- else
- platform_driver_unregister(&cmos_platform_driver);
-#else
+ pnp_unregister_driver(&cmos_pnp_driver);
+#endif
platform_driver_unregister(&cmos_platform_driver);
-#endif /* CONFIG_PNP */
}
module_exit(cmos_exit);

View File

@ -1,129 +0,0 @@
From: David Brownell <dbrownell@users.sourceforge.net>
A bugzilla entry (http://bugzilla.kernel.org/show_bug.cgi?id=11580)
reports that PNPACPI tables in some HP servers don't list RTC devices.
Work around that on x86 (ignore ia64, the other user of ACPI) by
having ACPI glue check for that case, and if necessary then setting
up a platform device and having rtc_cmos use it.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
---
arch/x86/kernel/rtc.c | 13 ++++++++++++-
drivers/acpi/glue.c | 14 +++++++++++++-
drivers/pnp/core.c | 7 +++++++
drivers/rtc/rtc-cmos.c | 4 ++--
include/asm-x86/mc146818rtc.h | 5 +++++
include/linux/pnp.h | 1 +
6 files changed, 40 insertions(+), 4 deletions(-)
--- a/arch/x86/kernel/rtc.c
+++ b/arch/x86/kernel/rtc.c
@@ -220,10 +220,21 @@ static struct platform_device rtc_device
.num_resources = ARRAY_SIZE(rtc_resources),
};
+#ifdef CONFIG_PNP
+/* PNPACPI tables sometimes omit the RTC, or are ignored */
+struct device *__init add_nonpnp_rtc_cmos(void)
+{
+ if (!rtc_device.dev.bus)
+ platform_device_register(&rtc_device);
+ return &rtc_device.dev;
+}
+#endif
+
static __init int add_rtc_cmos(void)
{
#ifdef CONFIG_PNP
- if (!pnp_platform_devices)
+ /* sometimes pnpacpi=off */
+ if (!pnp_platform_devices && !rtc_device.dev.bus)
platform_device_register(&rtc_device);
#else
platform_device_register(&rtc_device);
--- a/drivers/acpi/glue.c
+++ b/drivers/acpi/glue.c
@@ -338,7 +338,19 @@ static int __init pnp_match(struct devic
static struct device *__init get_rtc_dev(void)
{
- return bus_find_device(&pnp_bus_type, NULL, NULL, pnp_match);
+ struct device *rtc;
+
+ /* return RTC from PNPACPI tables */
+ rtc = bus_find_device(&pnp_bus_type, NULL, NULL, pnp_match);
+
+#ifdef ARCH_PNP_RTC_WORKAROUND
+ /* cope with buggy PNPACPI tables; seen on some HP DL3x0 servers */
+ if (!rtc) {
+ pnp_rtc_missing = true;
+ rtc = add_nonpnp_rtc_cmos();
+ }
+#endif
+ return rtc;
}
static int __init acpi_rtc_init(void)
--- a/drivers/pnp/core.c
+++ b/drivers/pnp/core.c
@@ -25,10 +25,17 @@ DEFINE_SPINLOCK(pnp_lock);
* ACPI or PNPBIOS should tell us about all platform devices, so we can
* skip some blind probes. ISAPNP typically enumerates only plug-in ISA
* devices, not built-in things like COM ports.
+ *
+ * Sometimes ACPI tables omit critical devices, assigning them to grab-bag
+ * nodes and forcing drivers to use a platform_device node or (yeech!) use
+ * poke-at-the-hardware algorithms for device discovery.
*/
int pnp_platform_devices;
EXPORT_SYMBOL(pnp_platform_devices);
+bool pnp_rtc_missing;
+EXPORT_SYMBOL(pnp_rtc_missing);
+
void *pnp_alloc(long size)
{
void *result;
--- a/drivers/rtc/rtc-cmos.c
+++ b/drivers/rtc/rtc-cmos.c
@@ -1137,7 +1137,7 @@ static struct platform_driver cmos_platf
static int __init cmos_init(void)
{
#ifdef CONFIG_PNP
- if (pnp_platform_devices)
+ if (pnp_platform_devices && !pnp_rtc_missing)
return pnp_register_driver(&cmos_pnp_driver);
else
return platform_driver_probe(&cmos_platform_driver,
@@ -1152,7 +1152,7 @@ module_init(cmos_init);
static void __exit cmos_exit(void)
{
#ifdef CONFIG_PNP
- if (pnp_platform_devices)
+ if (pnp_platform_devices && !pnp_rtc_missing)
pnp_unregister_driver(&cmos_pnp_driver);
else
platform_driver_unregister(&cmos_platform_driver);
--- a/include/asm-x86/mc146818rtc.h
+++ b/include/asm-x86/mc146818rtc.h
@@ -101,4 +101,9 @@ extern unsigned long mach_get_cmos_time(
#define RTC_IRQ 8
+#ifdef CONFIG_PNP
+#define ARCH_PNP_RTC_WORKAROUND
+extern struct device *add_nonpnp_rtc_cmos(void);
+#endif
+
#endif /* _ASM_MC146818RTC_H */
--- a/include/linux/pnp.h
+++ b/include/linux/pnp.h
@@ -420,6 +420,7 @@ int pnp_device_attach(struct pnp_dev *pn
void pnp_device_detach(struct pnp_dev *pnp_dev);
extern struct list_head pnp_global;
extern int pnp_platform_devices;
+extern bool pnp_rtc_missing;
/* multidevice card support */
struct pnp_dev *pnp_request_card_device(struct pnp_card_link *clink,

View File

@ -1,48 +0,0 @@
#
# Mkvmlinuz support patch, called by debian's kernel-package to generate
# the files needed by mkvmlinuz to generate the bootable images from vmlinux.
# Author: Sven Luther <luther@debian.org>
# Based on work from: Jens Schmalzing <jensen@debian.org>
# Original comment from Jens :
# This shell script is intended to be put into the debian subdirectory
# of a Linux kernel tree, where make-kpkg will find and execute it
# while building a kernel-image package. The purpose of this script
# is to add glue (object code, libraries, utilities and so on) from
# the kernel tree to the kernel-image package. Later, the mkvmlinuz
# utility, which is available as a separate Debian package, can use
# this glue to create a bootable compressed kernel from the
# uncompressed kernel in the kernel-image package and optionally a
# ramdisk. This is especially important on PowerPC subarchitectures
# that don't have a boot loader, but also comes handy for rescue
# systems and the like.
# Upstream status: well, this is a debian specific hack, it would be nice
# if it was going upstream, but probably not in this form.
#
--- linux-kernel-2.6.12-2.6.12/arch/ppc/boot/Makefile.orig 2005-07-15 12:46:28.000000000 +0000
+++ linux-kernel-2.6.12-2.6.12/arch/ppc/boot/Makefile 2005-07-15 12:55:56.000000000 +0000
@@ -32,3 +32,25 @@
$(bootdir-y): $(addprefix $(obj)/,$(subdir-y)) \
$(addprefix $(obj)/,$(hostprogs-y))
$(Q)$(MAKE) $(build)=$(obj)/$@ $(MAKECMDGOALS)
+
+mkvmlinuz_support_install:
+ # mkvmlinuz support, based on work done originally by Jens Schmalzing <jensen@debian.org>
+ mkdir -p $(INSTALL_MKVMLINUZ)/boot
+ install -m 644 ld.script $(INSTALL_MKVMLINUZ)/boot
+
+ mkdir -p $(INSTALL_MKVMLINUZ)/lib
+ install -m 644 ../../../lib/lib.a $(INSTALL_MKVMLINUZ)/lib
+ install -m 644 lib/lib.a $(INSTALL_MKVMLINUZ)/lib/ppc.a
+ install -m 644 common/lib.a $(INSTALL_MKVMLINUZ)/lib/common.a
+ if [ -e of1275/lib.a ]; then \
+ install -m 644 of1275/lib.a $(INSTALL_MKVMLINUZ)/lib/of.a; \
+ fi
+
+ mkdir -p $(INSTALL_MKVMLINUZ)/obj/simple
+ install -m 644 simple/*.o $(INSTALL_MKVMLINUZ)/obj/simple
+ rm -f $(INSTALL_MKVMLINUZ)/obj/simple/image*.o
+
+ mkdir -p $(INSTALL_MKVMLINUZ)/utils
+ install -m 755 utils/mkbugboot $(INSTALL_MKVMLINUZ)/utils
+ install -m 755 utils/mkprep $(INSTALL_MKVMLINUZ)/utils
+ install -m 755 utils/mktree $(INSTALL_MKVMLINUZ)/utils

View File

@ -1,11 +0,0 @@
--- linux-source-2.6.26/drivers/misc/hpilo.c~ 2008-08-06 13:22:32.000000000 -0600
+++ linux-source-2.6.26/drivers/misc/hpilo.c 2008-08-06 13:22:42.000000000 -0600
@@ -688,7 +688,7 @@
for (minor = 0 ; minor < MAX_CCB; minor++) {
struct device *dev;
dev = device_create(ilo_class, &pdev->dev,
- MKDEV(ilo_major, minor), NULL,
+ MKDEV(ilo_major, minor),
"hpilo!d%dccb%d", devnum, minor);
if (IS_ERR(dev))
dev_err(&pdev->dev, "Could not create files\n");