--- /dev/null
+From 99e3a1eb3c22bb671c6f3d22d8244bfc9fad8185 Mon Sep 17 00:00:00 2001
+From: Cedric Hombourger <chombourger@gmail.com>
+Date: Sat, 25 Apr 2009 09:38:21 +0200
+Subject: kbuild: fix Module.markers permission error under cygwin
+
+From: Cedric Hombourger <chombourger@gmail.com>
+
+commit 99e3a1eb3c22bb671c6f3d22d8244bfc9fad8185 upstream.
+
+While building the kernel, we end-up calling modpost with -K and -M
+options for the same file (Modules.markers). This is resulting in
+modpost's main function calling read_markers() and then write_markers() on
+the same file.
+
+We then have read_markers() mmap'ing the file, and writer_markers()
+opening that same file for writing.
+
+The issue is that read_markers() exits without munmap'ing the file and is
+as a matter holding a reference on Modules.markers. When write_markers()
+is opening that very same file for writing, we still have a reference on
+it and cygwin (Windows?) is then making fopen() fail with EPERM.
+
+Calling release_file() before exiting read_markers() clears that reference
+(and memory leak) and fopen() then succeeds.
+
+Tested on both cygwin (1.3.22) and Linux. Also ran modpost within
+valgrind on Linux to make sure that the munmap'ed file was not accessed
+after read_markers()
+
+Signed-off-by: Cedric Hombourger <chombourger@gmail.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ scripts/mod/modpost.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/scripts/mod/modpost.c
++++ b/scripts/mod/modpost.c
+@@ -1997,6 +1997,7 @@ static void read_markers(const char *fna
+ if (!mod->skip)
+ add_marker(mod, marker, fmt);
+ }
++ release_file(file, size);
+ return;
+ fail:
+ fatal("parse error in markers list file\n");
--- /dev/null
+From 0816178638c15ce5472d39d771a96860dff4141a Mon Sep 17 00:00:00 2001
+From: Vitaly Mayatskikh <v.mayatskih@gmail.com>
+Date: Thu, 30 Apr 2009 15:08:18 -0700
+Subject: pagemap: require aligned-length, non-null reads of /proc/pid/pagemap
+
+From: Vitaly Mayatskikh <v.mayatskih@gmail.com>
+
+commit 0816178638c15ce5472d39d771a96860dff4141a upstream.
+
+The intention of commit aae8679b0ebcaa92f99c1c3cb0cd651594a43915
+("pagemap: fix bug in add_to_pagemap, require aligned-length reads of
+/proc/pid/pagemap") was to force reads of /proc/pid/pagemap to be a
+multiple of 8 bytes, but now it allows to read 0 bytes, which actually
+puts some data to user's buffer. According to POSIX, if count is zero,
+read() should return zero and has no other results.
+
+Signed-off-by: Vitaly Mayatskikh <v.mayatskih@gmail.com>
+Cc: Thomas Tuttle <ttuttle@google.com>
+Acked-by: Matt Mackall <mpm@selenic.com>
+Cc: Alexey Dobriyan <adobriyan@gmail.com>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/proc/task_mmu.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/fs/proc/task_mmu.c
++++ b/fs/proc/task_mmu.c
+@@ -665,6 +665,10 @@ static ssize_t pagemap_read(struct file
+ goto out_task;
+
+ ret = 0;
++
++ if (!count)
++ goto out_task;
++
+ mm = get_task_mm(task);
+ if (!mm)
+ goto out_task;
--- /dev/null
+From 162dedd39dcc6eca3fc0d29cf19658c6c13b840e Mon Sep 17 00:00:00 2001
+From: Thomas Renninger <trenn@suse.de>
+Date: Fri, 3 Apr 2009 06:34:00 -0700
+Subject: PCI quirk: disable MSI on VIA VT3364 chipsets
+
+From: Thomas Renninger <trenn@suse.de>
+
+commit 162dedd39dcc6eca3fc0d29cf19658c6c13b840e upstream.
+
+Without this patch, Broadcom BCM5906 Ethernet controllers set up via MSI
+cause the machine to hang. Tejun agreed that the best is to blacklist
+the whole chipset and after adding it, seeing the other VIA quirks
+disabling MSI, this very much looks like the right way.
+
+Cc: <stable@kernel.org>
+Signed-off-by: Thomas Renninger <trenn@suse.de>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/pci/quirks.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -1832,6 +1832,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_RS480, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3336, quirk_disable_all_msi);
+ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3351, quirk_disable_all_msi);
++DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_VT3364, quirk_disable_all_msi);
+
+ /* Disable MSI on chipsets that are known to not support it */
+ static void __devinit quirk_disable_msi(struct pci_dev *dev)
forcedeth-fix-resume-from-hibernation-regression.patch
b43-poison-rx-buffers.patch
b43-refresh-rx-poison-on-buffer-recycling.patch
+kbuild-fix-module.markers-permission-error-under-cygwin.patch
+pagemap-require-aligned-length-non-null-reads-of-proc-pid-pagemap.patch
+pci-quirk-disable-msi-on-via-vt3364-chipsets.patch
+x86-pci-don-t-call-e820_all_mapped-with-1-in-the-mmconfig-case.patch
--- /dev/null
+From 044cd80942e47b9de0915b627902adf05c52377f Mon Sep 17 00:00:00 2001
+From: Yinghai Lu <yinghai@kernel.org>
+Date: Sat, 18 Apr 2009 01:43:46 -0700
+Subject: x86/PCI: don't call e820_all_mapped with -1 in the mmconfig case
+
+From: Yinghai Lu <yinghai@kernel.org>
+
+commit 044cd80942e47b9de0915b627902adf05c52377f upstream.
+
+e820_all_mapped need end is (addr + size) instead of (addr + size - 1)
+
+Cc: stable@kernel.org
+Acked-by: Ingo Molnar <mingo@elte.hu>
+Signed-off-by: Yinghai Lu <yinghai@kernel.org>
+Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/x86/pci/mmconfig-shared.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+--- a/arch/x86/pci/mmconfig-shared.c
++++ b/arch/x86/pci/mmconfig-shared.c
+@@ -255,7 +255,7 @@ static acpi_status __init check_mcfg_res
+ if (!fixmem32)
+ return AE_OK;
+ if ((mcfg_res->start >= fixmem32->address) &&
+- (mcfg_res->end < (fixmem32->address +
++ (mcfg_res->end <= (fixmem32->address +
+ fixmem32->address_length))) {
+ mcfg_res->flags = 1;
+ return AE_CTRL_TERMINATE;
+@@ -272,7 +272,7 @@ static acpi_status __init check_mcfg_res
+ return AE_OK;
+
+ if ((mcfg_res->start >= address.minimum) &&
+- (mcfg_res->end < (address.minimum + address.address_length))) {
++ (mcfg_res->end <= (address.minimum + address.address_length))) {
+ mcfg_res->flags = 1;
+ return AE_CTRL_TERMINATE;
+ }
+@@ -319,7 +319,7 @@ static int __init is_mmconf_reserved(che
+ u64 old_size = size;
+ int valid = 0;
+
+- while (!is_reserved(addr, addr + size - 1, E820_RESERVED)) {
++ while (!is_reserved(addr, addr + size, E820_RESERVED)) {
+ size >>= 1;
+ if (size < (16UL<<20))
+ break;