From: Greg Kroah-Hartman Date: Fri, 2 Oct 2009 00:04:10 +0000 (-0700) Subject: 2.6.30.8 review cycle X-Git-Tag: v2.6.27.36~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=652fe4cedf0a79bb5b6b25db7939f4da651a16e7;p=thirdparty%2Fkernel%2Fstable-queue.git 2.6.30.8 review cycle --- diff --git a/queue-2.6.30/acpi-pci_slot.ko-wants-a-64-bit-_sun.patch b/review-2.6.30/acpi-pci_slot.ko-wants-a-64-bit-_sun.patch similarity index 100% rename from queue-2.6.30/acpi-pci_slot.ko-wants-a-64-bit-_sun.patch rename to review-2.6.30/acpi-pci_slot.ko-wants-a-64-bit-_sun.patch diff --git a/queue-2.6.30/ahci-restore-pci_intx-handling.patch b/review-2.6.30/ahci-restore-pci_intx-handling.patch similarity index 100% rename from queue-2.6.30/ahci-restore-pci_intx-handling.patch rename to review-2.6.30/ahci-restore-pci_intx-handling.patch diff --git a/queue-2.6.30/fix-idle-time-field-in-proc-uptime.patch b/review-2.6.30/fix-idle-time-field-in-proc-uptime.patch similarity index 100% rename from queue-2.6.30/fix-idle-time-field-in-proc-uptime.patch rename to review-2.6.30/fix-idle-time-field-in-proc-uptime.patch diff --git a/queue-2.6.30/fix-null-ptr-regression-in-powernow-k8.patch b/review-2.6.30/fix-null-ptr-regression-in-powernow-k8.patch similarity index 100% rename from queue-2.6.30/fix-null-ptr-regression-in-powernow-k8.patch rename to review-2.6.30/fix-null-ptr-regression-in-powernow-k8.patch diff --git a/queue-2.6.30/fs-make-sure-data-stored-into-inode-is-properly-seen-before-unlocking-new-inode.patch b/review-2.6.30/fs-make-sure-data-stored-into-inode-is-properly-seen-before-unlocking-new-inode.patch similarity index 100% rename from queue-2.6.30/fs-make-sure-data-stored-into-inode-is-properly-seen-before-unlocking-new-inode.patch rename to review-2.6.30/fs-make-sure-data-stored-into-inode-is-properly-seen-before-unlocking-new-inode.patch diff --git a/queue-2.6.30/hugetlb-restore-interleaving-of-bootmem-huge-pages.patch b/review-2.6.30/hugetlb-restore-interleaving-of-bootmem-huge-pages.patch similarity index 100% rename from queue-2.6.30/hugetlb-restore-interleaving-of-bootmem-huge-pages.patch rename to review-2.6.30/hugetlb-restore-interleaving-of-bootmem-huge-pages.patch diff --git a/queue-2.6.30/kallsyms-fix-segfault-in-prefix_underscores_count.patch b/review-2.6.30/kallsyms-fix-segfault-in-prefix_underscores_count.patch similarity index 100% rename from queue-2.6.30/kallsyms-fix-segfault-in-prefix_underscores_count.patch rename to review-2.6.30/kallsyms-fix-segfault-in-prefix_underscores_count.patch diff --git a/queue-2.6.30/kvm-fix-cpuid-e2big-handling-for-extended-request-types.patch b/review-2.6.30/kvm-fix-cpuid-e2big-handling-for-extended-request-types.patch similarity index 100% rename from queue-2.6.30/kvm-fix-cpuid-e2big-handling-for-extended-request-types.patch rename to review-2.6.30/kvm-fix-cpuid-e2big-handling-for-extended-request-types.patch diff --git a/queue-2.6.30/kvm-guest-fix-bogus-wallclock-physical-address-calculation.patch b/review-2.6.30/kvm-guest-fix-bogus-wallclock-physical-address-calculation.patch similarity index 100% rename from queue-2.6.30/kvm-guest-fix-bogus-wallclock-physical-address-calculation.patch rename to review-2.6.30/kvm-guest-fix-bogus-wallclock-physical-address-calculation.patch diff --git a/queue-2.6.30/kvm-limit-lapic-periodic-timer-frequency.patch b/review-2.6.30/kvm-limit-lapic-periodic-timer-frequency.patch similarity index 100% rename from queue-2.6.30/kvm-limit-lapic-periodic-timer-frequency.patch rename to review-2.6.30/kvm-limit-lapic-periodic-timer-frequency.patch diff --git a/queue-2.6.30/kvm-mmu-fix-bogus-alloc_mmu_pages-assignment.patch b/review-2.6.30/kvm-mmu-fix-bogus-alloc_mmu_pages-assignment.patch similarity index 100% rename from queue-2.6.30/kvm-mmu-fix-bogus-alloc_mmu_pages-assignment.patch rename to review-2.6.30/kvm-mmu-fix-bogus-alloc_mmu_pages-assignment.patch diff --git a/queue-2.6.30/kvm-mmu-fix-missing-locking-in-alloc_mmu_pages.patch b/review-2.6.30/kvm-mmu-fix-missing-locking-in-alloc_mmu_pages.patch similarity index 100% rename from queue-2.6.30/kvm-mmu-fix-missing-locking-in-alloc_mmu_pages.patch rename to review-2.6.30/kvm-mmu-fix-missing-locking-in-alloc_mmu_pages.patch diff --git a/queue-2.6.30/kvm-mmu-make-__kvm_mmu_free_some_pages-handle-empty-list.patch b/review-2.6.30/kvm-mmu-make-__kvm_mmu_free_some_pages-handle-empty-list.patch similarity index 100% rename from queue-2.6.30/kvm-mmu-make-__kvm_mmu_free_some_pages-handle-empty-list.patch rename to review-2.6.30/kvm-mmu-make-__kvm_mmu_free_some_pages-handle-empty-list.patch diff --git a/queue-2.6.30/kvm-vmx-check-cpl-before-emulating-debug-register-access.patch b/review-2.6.30/kvm-vmx-check-cpl-before-emulating-debug-register-access.patch similarity index 100% rename from queue-2.6.30/kvm-vmx-check-cpl-before-emulating-debug-register-access.patch rename to review-2.6.30/kvm-vmx-check-cpl-before-emulating-debug-register-access.patch diff --git a/queue-2.6.30/kvm-vmx-fix-cr8-exiting-control-clobbering-by-ept.patch b/review-2.6.30/kvm-vmx-fix-cr8-exiting-control-clobbering-by-ept.patch similarity index 100% rename from queue-2.6.30/kvm-vmx-fix-cr8-exiting-control-clobbering-by-ept.patch rename to review-2.6.30/kvm-vmx-fix-cr8-exiting-control-clobbering-by-ept.patch diff --git a/queue-2.6.30/kvm-x86-disallow-hypercalls-for-guest-callers-in-rings-0.patch b/review-2.6.30/kvm-x86-disallow-hypercalls-for-guest-callers-in-rings-0.patch similarity index 100% rename from queue-2.6.30/kvm-x86-disallow-hypercalls-for-guest-callers-in-rings-0.patch rename to review-2.6.30/kvm-x86-disallow-hypercalls-for-guest-callers-in-rings-0.patch diff --git a/review-2.6.30/mbox b/review-2.6.30/mbox new file mode 100644 index 00000000000..a63536bd7cb --- /dev/null +++ b/review-2.6.30/mbox @@ -0,0 +1,2417 @@ +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233318.969422820@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:17 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Alex Chiang , + Len Brown +Subject: [patch 01/30] ACPI: pci_slot.ko wants a 64-bit _SUN +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=acpi-pci_slot.ko-wants-a-64-bit-_sun.patch +Content-Length: 1334 +Lines: 41 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Alex Chiang + +commit 7e24bc1ce669b2876ffa475ea1147f2bb9ffdc52 upstream. + +Similar to commit b6adc195 (PCI hotplug: acpiphp wants a 64-bit +_SUN), pci_slot.ko reads and creates sysfs directories based on +the _SUN method. + +Certain HP platforms return 64 bits in _SUN. This change to +pci_slot.ko allows us to see the correct sysfs directories. + +Reported-by: Chad Smith +Signed-off-by: Alex Chiang +Signed-off-by: Len Brown +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/acpi/pci_slot.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/acpi/pci_slot.c ++++ b/drivers/acpi/pci_slot.c +@@ -57,7 +57,7 @@ ACPI_MODULE_NAME("pci_slot"); + MY_NAME , ## arg); \ + } while (0) + +-#define SLOT_NAME_SIZE 20 /* Inspired by #define in acpiphp.h */ ++#define SLOT_NAME_SIZE 21 /* Inspired by #define in acpiphp.h */ + + struct acpi_pci_slot { + acpi_handle root_handle; /* handle of the root bridge */ +@@ -149,7 +149,7 @@ register_slot(acpi_handle handle, u32 lv + return AE_OK; + } + +- snprintf(name, sizeof(name), "%u", (u32)sun); ++ snprintf(name, sizeof(name), "%llu", sun); + pci_slot = pci_create_slot(pci_bus, device, name, NULL); + if (IS_ERR(pci_slot)) { + err("pci_create_slot returned %ld\n", PTR_ERR(pci_slot)); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.139191343@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:18 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jan Kara , + Christoph Hellwig +Subject: [patch 02/30] fs: make sure data stored into inode is properly seen before unlocking new inode +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=fs-make-sure-data-stored-into-inode-is-properly-seen-before-unlocking-new-inode.patch +Content-Length: 1763 +Lines: 47 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Jan Kara + +commit 580be0837a7a59b207c3d5c661d044d8dd0a6a30 upstream. + +In theory it could happen that on one CPU we initialize a new inode but +clearing of I_NEW | I_LOCK gets reordered before some of the +initialization. Thus on another CPU we return not fully uptodate inode +from iget_locked(). + +This seems to fix a corruption issue on ext3 mounted over NFS. + +[akpm@linux-foundation.org: add some commentary] +Signed-off-by: Jan Kara +Cc: Christoph Hellwig +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + fs/inode.c | 14 ++++++++------ + 1 file changed, 8 insertions(+), 6 deletions(-) + +--- a/fs/inode.c ++++ b/fs/inode.c +@@ -672,13 +672,15 @@ void unlock_new_inode(struct inode *inod + } + #endif + /* +- * This is special! We do not need the spinlock +- * when clearing I_LOCK, because we're guaranteed +- * that nobody else tries to do anything about the +- * state of the inode when it is locked, as we +- * just created it (so there can be no old holders +- * that haven't tested I_LOCK). ++ * This is special! We do not need the spinlock when clearing I_LOCK, ++ * because we're guaranteed that nobody else tries to do anything about ++ * the state of the inode when it is locked, as we just created it (so ++ * there can be no old holders that haven't tested I_LOCK). ++ * However we must emit the memory barrier so that other CPUs reliably ++ * see the clearing of I_LOCK after the other inode initialisation has ++ * completed. + */ ++ smp_mb(); + WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW)); + inode->i_state &= ~(I_LOCK|I_NEW); + wake_up_inode(inode); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.270212254@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:19 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Paul Mundt , + Lai Jiangshan , + Sam Ravnborg , + Paulo Marques , + Ingo Molnar +Subject: [patch 03/30] kallsyms: fix segfault in prefix_underscores_count() +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kallsyms-fix-segfault-in-prefix_underscores_count.patch +Content-Length: 1582 +Lines: 48 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Paul Mundt + +commit a9ece53c4089ef23d4002d34c4c7148d94622a40 upstream. + +Commit b478b782e110fdb4135caa3062b6d687e989d994 "kallsyms, tracing: output +more proper symbol name" introduces a "bugfix" that introduces a segfault +in kallsyms in my configurations. + +The cause is the introduction of prefix_underscores_count() which attempts +to count underscores, even in symbols that do not have them. As a result, +it just uselessly runs past the end of the buffer until it crashes: + + CC init/version.o + LD init/built-in.o + LD .tmp_vmlinux1 + KSYM .tmp_kallsyms1.S +/bin/sh: line 1: 16934 Done sh-linux-gnu-nm -n .tmp_vmlinux1 + 16935 Segmentation fault | scripts/kallsyms > .tmp_kallsyms1.S +make: *** [.tmp_kallsyms1.S] Error 139 + +This simplifies the logic and just does a straightforward count. + +Signed-off-by: Paul Mundt +Reviewed-by: Li Zefan +Cc: Lai Jiangshan +Cc: Sam Ravnborg +Cc: Paulo Marques +Cc: Ingo Molnar +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + scripts/kallsyms.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/scripts/kallsyms.c ++++ b/scripts/kallsyms.c +@@ -539,7 +539,7 @@ static int prefix_underscores_count(cons + { + const char *tail = str; + +- while (*tail != '_') ++ while (*tail == '_') + tail++; + + return tail - str; + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.401694678@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:20 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Ryusuke Konishi +Subject: [patch 04/30] nilfs2: fix missing zero-fill initialization of btree node cache +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=nilfs2-fix-missing-zero-fill-initialization-of-btree-node-cache.patch +Content-Length: 1603 +Lines: 43 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Ryusuke Konishi + +commit 1f28fcd925b2b3157411bbd08f0024b55b70d8dd upstream. + +This will fix file system corruption which infrequently happens after +mount. The problem was reported from users with the title "[NILFS +users] Fail to mount NILFS." (Message-ID: +<200908211918.34720.yuri@itinteg.net>), and so forth. I've also +experienced the corruption multiple times on kernel 2.6.30 and 2.6.31. + +The problem turned out to be caused due to discordance between +mapping->nrpages of a btree node cache and the actual number of pages +hung on the cache; if the mapping->nrpages becomes zero even as it has +pages, truncate_inode_pages() returns without doing anything. Usually +this is harmless except it may cause page leak, but garbage collection +fairly infrequently sees a stale page remained in the btree node cache +of DAT (i.e. disk address translation file of nilfs), and induces the +corruption. + +I identified a missing initialization in btree node caches was the +root cause. This corrects the bug. + +I've tested this for kernel 2.6.30 and 2.6.31. + +Reported-by: Yuri Chislov +Signed-off-by: Ryusuke Konishi +Signed-off-by: Greg Kroah-Hartman + +--- + fs/nilfs2/btnode.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/fs/nilfs2/btnode.c ++++ b/fs/nilfs2/btnode.c +@@ -36,6 +36,7 @@ + + void nilfs_btnode_cache_init_once(struct address_space *btnc) + { ++ memset(btnc, 0, sizeof(*btnc)); + INIT_RADIX_TREE(&btnc->page_tree, GFP_ATOMIC); + spin_lock_init(&btnc->tree_lock); + INIT_LIST_HEAD(&btnc->private_list); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.556002429@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:21 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Christian Lamparter , + "John W. Linville" +Subject: [patch 05/30] p54usb: add Zcomax XG-705A usbid +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=p54usb-add-zcomax-xg-705a-usbid.patch +Content-Length: 1034 +Lines: 26 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Christian Lamparter + +commit f7f71173ea69d4dabf166533beffa9294090b7ef upstream. + +This patch adds a new usbid for Zcomax XG-705A to the device table. + +Reported-by: Jari Jaakola +Signed-off-by: Christian Lamparter +Signed-off-by: John W. Linville +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/p54/p54usb.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/p54/p54usb.c ++++ b/drivers/net/wireless/p54/p54usb.c +@@ -66,6 +66,7 @@ static struct usb_device_id p54u_table[] + {USB_DEVICE(0x0bf8, 0x1009)}, /* FUJITSU E-5400 USB D1700*/ + {USB_DEVICE(0x0cde, 0x0006)}, /* Medion MD40900 */ + {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ ++ {USB_DEVICE(0x0cde, 0x0015)}, /* Zcomax XG-705A */ + {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ + {USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */ + {USB_DEVICE(0x1260, 0xee22)}, /* SMC 2862W-G version 2 */ + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.687218132@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:22 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Chuck Ebbert , + Steve French +Subject: [patch 06/30] [CIFS] Re-enable Lanman security +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=re-enable-lanman-security.patch +Content-Length: 1226 +Lines: 32 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Chuck Ebbert + +commit 20d1752f3d6bd32beb90949559e0d14a0b234445 upstream. + +commit ac68392460ffefed13020967bae04edc4d3add06 ("[CIFS] Allow raw +ntlmssp code to be enabled with sec=ntlmssp") added a new bit to the +allowed security flags mask but seems to have inadvertently removed +Lanman security from the allowed flags. Add it back. + +Signed-off-by: Chuck Ebbert +Signed-off-by: Steve French +Signed-off-by: Greg Kroah-Hartman + +--- + fs/cifs/cifsglob.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/fs/cifs/cifsglob.h ++++ b/fs/cifs/cifsglob.h +@@ -544,9 +544,9 @@ require use of the stronger protocol */ + #define CIFSSEC_MUST_LANMAN 0x10010 + #define CIFSSEC_MUST_PLNTXT 0x20020 + #ifdef CONFIG_CIFS_UPCALL +-#define CIFSSEC_MASK 0xAF0AF /* allows weak security but also krb5 */ ++#define CIFSSEC_MASK 0xBF0BF /* allows weak security but also krb5 */ + #else +-#define CIFSSEC_MASK 0xA70A7 /* current flags supported if weak */ ++#define CIFSSEC_MASK 0xB70B7 /* current flags supported if weak */ + #endif /* UPCALL */ + #else /* do not allow weak pw hash */ + #ifdef CONFIG_CIFS_UPCALL + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:19 2009 +Message-Id: <20091001233319.817064863@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:23 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Marcelo Tosatti , + Avi Kivity +Subject: [patch 07/30] KVM: VMX: Check cpl before emulating debug register access +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-vmx-check-cpl-before-emulating-debug-register-access.patch +Content-Length: 1916 +Lines: 62 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Avi Kivity + +(cherry picked from commit 0a79b009525b160081d75cef5dbf45817956acf2) + +Debug registers may only be accessed from cpl 0. Unfortunately, vmx will +code to emulate the instruction even though it was issued from guest +userspace, possibly leading to an unexpected trap later. + +Signed-off-by: Avi Kivity +Signed-off-by: Marcelo Tosatti +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/include/asm/kvm_host.h | 1 + + arch/x86/kvm/vmx.c | 2 ++ + arch/x86/kvm/x86.c | 13 +++++++++++++ + 3 files changed, 16 insertions(+) + +--- a/arch/x86/include/asm/kvm_host.h ++++ b/arch/x86/include/asm/kvm_host.h +@@ -620,6 +620,7 @@ void kvm_queue_exception(struct kvm_vcpu + void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code); + void kvm_inject_page_fault(struct kvm_vcpu *vcpu, unsigned long cr2, + u32 error_code); ++bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl); + + int kvm_pic_set_irq(void *opaque, int irq, int level); + +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -2865,6 +2865,8 @@ static int handle_dr(struct kvm_vcpu *vc + unsigned long val; + int dr, reg; + ++ if (!kvm_require_cpl(vcpu, 0)) ++ return 1; + dr = vmcs_readl(GUEST_DR7); + if (dr & DR7_GD) { + /* +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -217,6 +217,19 @@ static void __queue_exception(struct kvm + } + + /* ++ * Checks if cpl <= required_cpl; if true, return true. Otherwise queue ++ * a #GP and return false. ++ */ ++bool kvm_require_cpl(struct kvm_vcpu *vcpu, int required_cpl) ++{ ++ if (kvm_x86_ops->get_cpl(vcpu) <= required_cpl) ++ return true; ++ kvm_queue_exception_e(vcpu, GP_VECTOR, 0); ++ return false; ++} ++EXPORT_SYMBOL_GPL(kvm_require_cpl); ++ ++/* + * Load the pae pdptrs. Return true is they are all valid. + */ + int load_pdptrs(struct kvm_vcpu *vcpu, unsigned long cr3) + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233319.941189720@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:24 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + avi@redhat.com, + Gleb Natapov +Subject: [patch 08/30] KVM: VMX: Fix cr8 exiting control clobbering by EPT +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-vmx-fix-cr8-exiting-control-clobbering-by-ept.patch +Content-Length: 1272 +Lines: 34 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Gleb Natapov + +(cherry picked from commit 5fff7d270bd6a4759b6d663741b729cdee370257) +Don't call adjust_vmx_controls() two times for the same control. +It restores options that were dropped earlier. This loses us the cr8 +exit control, which causes a massive performance regression Windows x64. + +Signed-off-by: Gleb Natapov +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/vmx.c | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +--- a/arch/x86/kvm/vmx.c ++++ b/arch/x86/kvm/vmx.c +@@ -1206,12 +1206,9 @@ static __init int setup_vmcs_config(stru + if (_cpu_based_2nd_exec_control & SECONDARY_EXEC_ENABLE_EPT) { + /* CR3 accesses and invlpg don't need to cause VM Exits when EPT + enabled */ +- min &= ~(CPU_BASED_CR3_LOAD_EXITING | +- CPU_BASED_CR3_STORE_EXITING | +- CPU_BASED_INVLPG_EXITING); +- if (adjust_vmx_controls(min, opt, MSR_IA32_VMX_PROCBASED_CTLS, +- &_cpu_based_exec_control) < 0) +- return -EIO; ++ _cpu_based_exec_control &= ~(CPU_BASED_CR3_LOAD_EXITING | ++ CPU_BASED_CR3_STORE_EXITING | ++ CPU_BASED_INVLPG_EXITING); + rdmsr(MSR_IA32_VMX_EPT_VPID_CAP, + vmx_capability.ept, vmx_capability.vpid); + } + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.095488110@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:25 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Izik Eidus , + avi@redhat.com, + Marcelo Tosatti +Subject: [patch 09/30] KVM: MMU: make __kvm_mmu_free_some_pages handle empty list +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-mmu-make-__kvm_mmu_free_some_pages-handle-empty-list.patch +Content-Length: 914 +Lines: 29 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Izik Eidus + +(cherry picked from commit 3b80fffe2b31fb716d3ebe729c54464ee7856723) + +First check if the list is empty before attempting to look at list +entries. + +Signed-off-by: Izik Eidus +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/mmu.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/arch/x86/kvm/mmu.c ++++ b/arch/x86/kvm/mmu.c +@@ -2612,7 +2612,8 @@ EXPORT_SYMBOL_GPL(kvm_mmu_unprotect_page + + void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu) + { +- while (vcpu->kvm->arch.n_free_mmu_pages < KVM_REFILL_PAGES) { ++ while (vcpu->kvm->arch.n_free_mmu_pages < KVM_REFILL_PAGES && ++ !list_empty(&vcpu->kvm->arch.active_mmu_pages)) { + struct kvm_mmu_page *sp; + + sp = container_of(vcpu->kvm->arch.active_mmu_pages.prev, + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.245354779@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:26 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Jan Kiszka , + avi@redhat.com +Subject: [patch 10/30] KVM: x86: Disallow hypercalls for guest callers in rings > 0 +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-x86-disallow-hypercalls-for-guest-callers-in-rings-0.patch +Content-Length: 1548 +Lines: 55 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Jan Kiszka + +(cherry picked from commit 07708c4af1346ab1521b26a202f438366b7bcffd) + +So far unprivileged guest callers running in ring 3 can issue, e.g., MMU +hypercalls. Normally, such callers cannot provide any hand-crafted MMU +command structure as it has to be passed by its physical address, but +they can still crash the guest kernel by passing random addresses. + +To close the hole, this patch considers hypercalls valid only if issued +from guest ring 0. This may still be relaxed on a per-hypercall base in +the future once required. + +Signed-off-by: Jan Kiszka +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/x86.c | 6 ++++++ + include/linux/kvm_para.h | 1 + + 2 files changed, 7 insertions(+) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -2898,6 +2898,11 @@ int kvm_emulate_hypercall(struct kvm_vcp + a3 &= 0xFFFFFFFF; + } + ++ if (kvm_x86_ops->get_cpl(vcpu) != 0) { ++ ret = -KVM_EPERM; ++ goto out; ++ } ++ + switch (nr) { + case KVM_HC_VAPIC_POLL_IRQ: + ret = 0; +@@ -2909,6 +2914,7 @@ int kvm_emulate_hypercall(struct kvm_vcp + ret = -KVM_ENOSYS; + break; + } ++out: + kvm_register_write(vcpu, VCPU_REGS_RAX, ret); + ++vcpu->stat.hypercalls; + return r; +--- a/include/linux/kvm_para.h ++++ b/include/linux/kvm_para.h +@@ -13,6 +13,7 @@ + #define KVM_ENOSYS 1000 + #define KVM_EFAULT EFAULT + #define KVM_E2BIG E2BIG ++#define KVM_EPERM EPERM + + #define KVM_HC_VAPIC_POLL_IRQ 1 + #define KVM_HC_MMU_OP 2 + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.400713767@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:27 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Marcelo Tosatti , + avi@redhat.com +Subject: [patch 11/30] KVM: MMU: fix missing locking in alloc_mmu_pages +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-mmu-fix-missing-locking-in-alloc_mmu_pages.patch +Content-Length: 1166 +Lines: 35 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Marcelo Tosatti + +(cherry picked from commit 6a1ac77110ee3e8d8dfdef8442f3b30b3d83e6a2) + +n_requested_mmu_pages/n_free_mmu_pages are used by +kvm_mmu_change_mmu_pages to calculate the number of pages to zap. + +alloc_mmu_pages, called from the vcpu initialization path, modifies this +variables without proper locking, which can result in a negative value +in kvm_mmu_change_mmu_pages (say, with cpu hotplug). + +Signed-off-by: Marcelo Tosatti +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/mmu.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/arch/x86/kvm/mmu.c ++++ b/arch/x86/kvm/mmu.c +@@ -2692,12 +2692,14 @@ static int alloc_mmu_pages(struct kvm_vc + + ASSERT(vcpu); + ++ spin_lock(&vcpu->kvm->mmu_lock); + if (vcpu->kvm->arch.n_requested_mmu_pages) + vcpu->kvm->arch.n_free_mmu_pages = + vcpu->kvm->arch.n_requested_mmu_pages; + else + vcpu->kvm->arch.n_free_mmu_pages = + vcpu->kvm->arch.n_alloc_mmu_pages; ++ spin_unlock(&vcpu->kvm->mmu_lock); + /* + * When emulating 32-bit mode, cr3 is only 32 bits even on x86_64. + * Therefore we need to allocate shadow page tables in the first + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.549424364@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:28 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Marcelo Tosatti , + avi@redhat.com +Subject: [patch 12/30] KVM: MMU: fix bogus alloc_mmu_pages assignment +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-mmu-fix-bogus-alloc_mmu_pages-assignment.patch +Content-Length: 1084 +Lines: 35 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Marcelo Tosatti + +(cherry picked from commit b90c062c65cc8839edfac39778a37a55ca9bda36) + +Remove the bogus n_free_mmu_pages assignment from alloc_mmu_pages. + +It breaks accounting of mmu pages, since n_free_mmu_pages is modified +but the real number of pages remains the same. + +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/mmu.c | 8 -------- + 1 file changed, 8 deletions(-) + +--- a/arch/x86/kvm/mmu.c ++++ b/arch/x86/kvm/mmu.c +@@ -2692,14 +2692,6 @@ static int alloc_mmu_pages(struct kvm_vc + + ASSERT(vcpu); + +- spin_lock(&vcpu->kvm->mmu_lock); +- if (vcpu->kvm->arch.n_requested_mmu_pages) +- vcpu->kvm->arch.n_free_mmu_pages = +- vcpu->kvm->arch.n_requested_mmu_pages; +- else +- vcpu->kvm->arch.n_free_mmu_pages = +- vcpu->kvm->arch.n_alloc_mmu_pages; +- spin_unlock(&vcpu->kvm->mmu_lock); + /* + * When emulating 32-bit mode, cr3 is only 32 bits even on x86_64. + * Therefore we need to allocate shadow page tables in the first + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.677886993@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:29 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Marcelo Tosatti , + avi@redhat.com +Subject: [patch 13/30] KVM: limit lapic periodic timer frequency +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-limit-lapic-periodic-timer-frequency.patch +Content-Length: 959 +Lines: 34 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Marcelo Tosatti + +(cherry picked from commit 1444885a045fe3b1905a14ea1b52540bf556578b) + +Otherwise its possible to starve the host by programming lapic timer +with a very high frequency. + +Signed-off-by: Marcelo Tosatti +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/lapic.c | 9 +++++++++ + 1 file changed, 9 insertions(+) + +--- a/arch/x86/kvm/lapic.c ++++ b/arch/x86/kvm/lapic.c +@@ -635,6 +635,15 @@ static void start_apic_timer(struct kvm_ + + if (!apic->timer.period) + return; ++ /* ++ * Do not allow the guest to program periodic timers with small ++ * interval, since the hrtimers are not throttled by the host ++ * scheduler. ++ */ ++ if (apic_lvtt_period(apic)) { ++ if (apic->timer.period < NSEC_PER_MSEC/2) ++ apic->timer.period = NSEC_PER_MSEC/2; ++ } + + hrtimer_start(&apic->timer.dev, + ktime_add_ns(now, apic->timer.period), + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:20 2009 +Message-Id: <20091001233320.826090384@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:30 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Glauber Costa , + avi@redhat.com +Subject: [patch 14/30] KVM guest: fix bogus wallclock physical address calculation +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-guest-fix-bogus-wallclock-physical-address-calculation.patch +Content-Length: 1138 +Lines: 34 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Glauber Costa + +(cherry picked from commit a20316d2aa41a8f4fd171648bad8f044f6060826) + +The use of __pa() to calculate the address of a C-visible symbol +is wrong, and can lead to unpredictable results. See arch/x86/include/asm/page.h +for details. + +It should be replaced with __pa_symbol(), that does the correct math here, +by taking relocations into account. This ensures the correct wallclock data +structure physical address is passed to the hypervisor. + +Signed-off-by: Glauber Costa +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kernel/kvmclock.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/x86/kernel/kvmclock.c ++++ b/arch/x86/kernel/kvmclock.c +@@ -50,8 +50,8 @@ static unsigned long kvm_get_wallclock(v + struct timespec ts; + int low, high; + +- low = (int)__pa(&wall_clock); +- high = ((u64)__pa(&wall_clock) >> 32); ++ low = (int)__pa_symbol(&wall_clock); ++ high = ((u64)__pa_symbol(&wall_clock) >> 32); + native_write_msr(MSR_KVM_WALL_CLOCK, low, high); + + vcpu_time = &get_cpu_var(hv_clock); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233320.964047795@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:31 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Mark McLoughlin , + avi@redhat.com +Subject: [patch 15/30] KVM: fix cpuid E2BIG handling for extended request types +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=kvm-fix-cpuid-e2big-handling-for-extended-request-types.patch +Content-Length: 889 +Lines: 30 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Mark McLoughlin + +(cherry picked from commit cb007648de83cf226d69ec76e1c01848b4e8e49f) + +If we run out of cpuid entries for extended request types +we should return -E2BIG, just like we do for the standard +request types. + +Signed-off-by: Mark McLoughlin +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman +--- + arch/x86/kvm/x86.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -1438,6 +1438,10 @@ static int kvm_dev_ioctl_get_supported_c + for (func = 0x80000001; func <= limit && nent < cpuid->nent; ++func) + do_cpuid_ent(&cpuid_entries[nent], func, 0, + &nent, cpuid->nent); ++ r = -E2BIG; ++ if (nent >= cpuid->nent) ++ goto out_free; ++ + r = -EFAULT; + if (copy_to_user(entries, cpuid_entries, + nent * sizeof(struct kvm_cpuid_entry2))) + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233321.135633369@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:32 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org, + avi@redhat.com +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Juan Quintela , + Jan Kiszka +Subject: [patch 16/30] Revert "KVM: x86: check for cr3 validity in ioctl_set_sregs" +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=revert-kvm-x86-check-for-cr3-validity-in-ioctl_set_sregs.patch +Content-Length: 1171 +Lines: 42 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Marcelo Tosatti + +(cherry picked from commit dc7e795e3dd2a763e5ceaa1615f307e808cf3932) + +This reverts commit 6c20e1442bb1c62914bb85b7f4a38973d2a423ba. + +To my understanding, it became obsolete with the advent of the more +robust check in mmu_alloc_roots (89da4ff17f). Moreover, it prevents +the conceptually safe pattern + + 1. set sregs + 2. register mem-slots + 3. run vcpu + +by setting a sticky triple fault during step 1. + +Signed-off-by: Jan Kiszka +Signed-off-by: Avi Kivity +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/x86.c | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -4012,13 +4012,7 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct + + vcpu->arch.cr2 = sregs->cr2; + mmu_reset_needed |= vcpu->arch.cr3 != sregs->cr3; +- +- down_read(&vcpu->kvm->slots_lock); +- if (gfn_to_memslot(vcpu->kvm, sregs->cr3 >> PAGE_SHIFT)) +- vcpu->arch.cr3 = sregs->cr3; +- else +- set_bit(KVM_REQ_TRIPLE_FAULT, &vcpu->requests); +- up_read(&vcpu->kvm->slots_lock); ++ vcpu->arch.cr3 = sregs->cr3; + + kvm_set_cr8(vcpu, sregs->cr8); + + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233321.303910330@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:33 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Tejun Heo , + Jeff Garzik +Subject: [patch 17/30] ahci: restore pci_intx() handling +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=ahci-restore-pci_intx-handling.patch +Content-Length: 1484 +Lines: 41 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Tejun Heo + +commit 31b239ad1ba7225435e13f5afc47e48eb674c0cc upstream. + +Commit a5bfc4714b3f01365aef89a92673f2ceb1ccf246 dropped explicit +pci_intx() manipulation from ahci because it seemed unnecessary and +ahci doesn't seem to be the right place to be tweaking it if it were. +This was largely okay but there are exceptions. There was one on an +embedded platform which was fixed via firmware and now bko#14124 +reports it on a HP DL320. + + http://bugzilla.kernel.org/show_bug.cgi?id=14124 + +I still think this isn't something libata drivers should be caring +about (the only ones which are calling pci_intx() explicitly are +libata ones and one other driver) but for now reverting the change +seems to be the right thing to do. + +Signed-off-by: Tejun Heo +Reported-by: Thomas Jarosch +Signed-off-by: Jeff Garzik +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/ata/ahci.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/ata/ahci.c ++++ b/drivers/ata/ahci.c +@@ -2744,8 +2744,8 @@ static int ahci_init_one(struct pci_dev + if (board_id == board_ahci_sb700 && pdev->revision >= 0x40) + hpriv->flags &= ~AHCI_HFLAG_IGN_SERR_INTERNAL; + +- if (!(hpriv->flags & AHCI_HFLAG_NO_MSI)) +- pci_enable_msi(pdev); ++ if ((hpriv->flags & AHCI_HFLAG_NO_MSI) || pci_enable_msi(pdev)) ++ pci_intx(pdev, 1); + + /* save initial config */ + ahci_save_initial_config(pdev, hpriv); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233321.426432538@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:34 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org, + davem@davemloft.net +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + jakub@redhat.com, + security@kernel.org, + mingo@elte.hu, + Arjan van de Ven +Subject: [patch 18/30] net ax25: Fix signed comparison in the sockopt handler +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=net-ax25-fix-signed-comparison-in-the-sockopt-handler.patch +Content-Length: 1260 +Lines: 47 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Arjan van de Ven + +fixed upstream in commit b7058842c940ad2c08dd829b21e5c92ebe3b8758 in a different way + +The ax25 code tried to use + + if (optlen < sizeof(int)) + return -EINVAL; + +as a security check against optlen being negative (or zero) in the +set socket option. + +Unfortunately, "sizeof(int)" is an unsigned property, with the +result that the whole comparison is done in unsigned, letting +negative values slip through. + +This patch changes this to + + if (optlen < (int)sizeof(int)) + return -EINVAL; + +so that the comparison is done as signed, and negative values +get properly caught. + +Signed-off-by: Arjan van de Ven +Cc: David S. Miller +Cc: Ingo Molnar +Cc: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + net/ax25/af_ax25.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/ax25/af_ax25.c ++++ b/net/ax25/af_ax25.c +@@ -539,7 +539,7 @@ static int ax25_setsockopt(struct socket + if (level != SOL_AX25) + return -ENOPROTOOPT; + +- if (optlen < sizeof(int)) ++ if (optlen < (int)sizeof(int)) + return -EINVAL; + + if (get_user(opt, (int __user *)optval)) + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233321.578747017@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:35 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org, + Arjan van de Ven +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + jakub@redhat.com, + security@kernel.org, + mingo@elte.hu, + davem@davemloft.net, + Arjan van de Ven +Subject: [patch 19/30] net: Make the copy length in af_packet sockopt handler unsigned +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=net-make-the-copy-length-in-af_packet-sockopt-handler-unsigned.patch +Content-Length: 1260 +Lines: 41 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Arjan van de Ven + +fixed upstream in commit b7058842c940ad2c08dd829b21e5c92ebe3b8758 in a different way + +The length of the to-copy data structure is currently stored in +a signed integer. However many comparisons are done with sizeof(..) +which is unsigned. It's more suitable for this variable to be unsigned +to make these comparisons more naturally right. + +Signed-off-by: Arjan van de Ven +Cc: David S. Miller +Cc: Ingo Molnar +Cc: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + net/packet/af_packet.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/net/packet/af_packet.c ++++ b/net/packet/af_packet.c +@@ -1501,7 +1501,7 @@ packet_setsockopt(struct socket *sock, i + static int packet_getsockopt(struct socket *sock, int level, int optname, + char __user *optval, int __user *optlen) + { +- int len; ++ unsigned int len; + int val; + struct sock *sk = sock->sk; + struct packet_sock *po = pkt_sk(sk); +@@ -1514,7 +1514,7 @@ static int packet_getsockopt(struct sock + if (get_user(len, optlen)) + return -EFAULT; + +- if (len < 0) ++ if ((int)len < 0) + return -EINVAL; + + switch(optname) { + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:21 2009 +Message-Id: <20091001233321.739706856@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:36 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Dave Jones +Subject: [patch 20/30] [CPUFREQ] Fix NULL ptr regression in powernow-k8 +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=fix-null-ptr-regression-in-powernow-k8.patch +Content-Length: 2239 +Lines: 73 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Kurt Roeckx + +commit f0adb134d8dc9993a9998dc50845ec4f6ff4fadc upstream. + +Fixes bugzilla #13780 + +From: Kurt Roeckx +Signed-off-by: Dave Jones +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +--- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c ++++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +@@ -618,9 +618,10 @@ static int check_pst_table(struct powern + return 0; + } + +-static void invalidate_entry(struct powernow_k8_data *data, unsigned int entry) ++static void invalidate_entry(struct cpufreq_frequency_table *powernow_table, ++ unsigned int entry) + { +- data->powernow_table[entry].frequency = CPUFREQ_ENTRY_INVALID; ++ powernow_table[entry].frequency = CPUFREQ_ENTRY_INVALID; + } + + static void print_basics(struct powernow_k8_data *data) +@@ -926,13 +927,13 @@ static int fill_powernow_table_pstate(st + "bad value %d.\n", i, index); + printk(KERN_ERR PFX "Please report to BIOS " + "manufacturer\n"); +- invalidate_entry(data, i); ++ invalidate_entry(powernow_table, i); + continue; + } + rdmsr(MSR_PSTATE_DEF_BASE + index, lo, hi); + if (!(hi & HW_PSTATE_VALID_MASK)) { + dprintk("invalid pstate %d, ignoring\n", index); +- invalidate_entry(data, i); ++ invalidate_entry(powernow_table, i); + continue; + } + +@@ -982,7 +983,7 @@ static int fill_powernow_table_fidvid(st + /* verify frequency is OK */ + if ((freq > (MAX_FREQ * 1000)) || (freq < (MIN_FREQ * 1000))) { + dprintk("invalid freq %u kHz, ignoring\n", freq); +- invalidate_entry(data, i); ++ invalidate_entry(powernow_table, i); + continue; + } + +@@ -990,7 +991,7 @@ static int fill_powernow_table_fidvid(st + * BIOSs are using "off" to indicate invalid */ + if (vid == VID_OFF) { + dprintk("invalid vid %u, ignoring\n", vid); +- invalidate_entry(data, i); ++ invalidate_entry(powernow_table, i); + continue; + } + +@@ -1021,7 +1022,7 @@ static int fill_powernow_table_fidvid(st + (unsigned int) + (data->acpi_data.states[i].core_frequency + * 1000)); +- invalidate_entry(data, i); ++ invalidate_entry(powernow_table, i); + continue; + } + } + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233321.895031689@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:37 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + netdev@vger.kernel.org, + netfilter-devel@vger.kernel.org, + Patrick McHardy , + davem@davemloft.net, + Eric Dumazet +Subject: [patch 21/30] netfilter: bridge: refcount fix +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=netfilter-bridge-refcount-fix.patch +Content-Length: 999 +Lines: 35 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Patrick McHardy + +netfilter: bridge: refcount fix + +Upstream commit f3abc9b9: + +commit f216f082b2b37c4943f1e7c393e2786648d48f6f +([NETFILTER]: bridge netfilter: deal with martians correctly) +added a refcount leak on in_dev. + +Instead of using in_dev_get(), we can use __in_dev_get_rcu(), +as netfilter hooks are running under rcu_read_lock(), as pointed +by Patrick. + +Signed-off-by: Eric Dumazet +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + net/bridge/br_netfilter.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/bridge/br_netfilter.c ++++ b/net/bridge/br_netfilter.c +@@ -357,7 +357,7 @@ static int br_nf_pre_routing_finish(stru + }, + .proto = 0, + }; +- struct in_device *in_dev = in_dev_get(dev); ++ struct in_device *in_dev = __in_dev_get_rcu(dev); + + /* If err equals -EHOSTUNREACH the error is due to a + * martian destination or due to the fact that + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.057476155@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:38 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + netdev@vger.kernel.org, + netfilter-devel@vger.kernel.org, + Patrick McHardy , + davem@davemloft.net +Subject: [patch 22/30] netfilter: ebt_ulog: fix checkentry return value +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=netfilter-ebt_ulog-fix-checkentry-return-value.patch +Content-Length: 800 +Lines: 30 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Patrick McHardy + +netfilter: ebt_ulog: fix checkentry return value + +Upstream commit 8a56df0a: + +Commit 19eda87 (netfilter: change return types of check functions for +Ebtables extensions) broke the ebtables ulog module by missing a return +value conversion. + +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + net/bridge/netfilter/ebt_ulog.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/bridge/netfilter/ebt_ulog.c ++++ b/net/bridge/netfilter/ebt_ulog.c +@@ -266,7 +266,7 @@ static bool ebt_ulog_tg_check(const stru + if (uloginfo->qthreshold > EBT_ULOG_MAX_QLEN) + uloginfo->qthreshold = EBT_ULOG_MAX_QLEN; + +- return 0; ++ return true; + } + + static struct xt_target ebt_ulog_tg_reg __read_mostly = { + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.211355350@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:39 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + netdev@vger.kernel.org, + netfilter-devel@vger.kernel.org, + Patrick McHardy , + davem@davemloft.net, + Maximilian Engelhardt +Subject: [patch 23/30] netfilter: nf_nat: fix inverted logic for persistent NAT mappings +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=netfilter-nf_nat-fix-inverted-logic-for-persistent-nat-mappings.patch +Content-Length: 1454 +Lines: 39 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Patrick McHardy + +netfilter: nf_nat: fix inverted logic for persistent NAT mappings + +Upstream commit cce5a5c3: + +Kernel 2.6.30 introduced a patch [1] for the persistent option in the +netfilter SNAT target. This is exactly what we need here so I had a quick look +at the code and noticed that the patch is wrong. The logic is simply inverted. +The patch below fixes this. + +Also note that because of this the default behavior of the SNAT target has +changed since kernel 2.6.30 as it now ignores the destination IP in choosing +the source IP for nating (which should only be the case if the persistent +option is set). + +[1] http://git.eu.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=98d500d66cb7940747b424b245fc6a51ecfbf005 + +Signed-off-by: Maximilian Engelhardt +Signed-off-by: Patrick McHardy +Signed-off-by: Greg Kroah-Hartman + +--- + net/ipv4/netfilter/nf_nat_core.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/net/ipv4/netfilter/nf_nat_core.c ++++ b/net/ipv4/netfilter/nf_nat_core.c +@@ -212,7 +212,7 @@ find_best_ips_proto(struct nf_conntrack_ + maxip = ntohl(range->max_ip); + j = jhash_2words((__force u32)tuple->src.u3.ip, + range->flags & IP_NAT_RANGE_PERSISTENT ? +- (__force u32)tuple->dst.u3.ip : 0, 0); ++ 0 : (__force u32)tuple->dst.u3.ip, 0); + j = ((u64)j * (maxip - minip + 1)) >> 32; + *var_ipp = htonl(minip + j); + } + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.365718536@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:40 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Michael Abbott , + Martin Schwidefsky +Subject: [patch 24/30] Fix idle time field in /proc/uptime +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=fix-idle-time-field-in-proc-uptime.patch +Content-Length: 1154 +Lines: 39 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Michael Abbott + +commit 96830a57de1197519b62af6a4c9ceea556c18c3d upstream. + +Git commit 79741dd changes idle cputime accounting, but unfortunately +the /proc/uptime file hasn't caught up. Here the idle time calculation +from /proc/stat is copied over. + +Signed-off-by: Michael Abbott +Signed-off-by: Martin Schwidefsky +Signed-off-by: Greg Kroah-Hartman + +--- + fs/proc/uptime.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/fs/proc/uptime.c ++++ b/fs/proc/uptime.c +@@ -4,13 +4,18 @@ + #include + #include + #include ++#include + #include + + static int uptime_proc_show(struct seq_file *m, void *v) + { + struct timespec uptime; + struct timespec idle; +- cputime_t idletime = cputime_add(init_task.utime, init_task.stime); ++ int i; ++ cputime_t idletime = cputime_zero; ++ ++ for_each_possible_cpu(i) ++ idletime = cputime64_add(idletime, kstat_cpu(i).cpustat.idle); + + do_posix_clock_monotonic_gettime(&uptime); + monotonic_to_bootbased(&uptime); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.522313514@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:41 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org, + torvalds@linux-foundation.org +Cc: stable-review@kernel.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + Lee.Schermerhorn@hp.com, + lee.schermerhorn@hp.com, + ak@linux.intel.com, + eric.whitney@hp.com, + mel@csn.ul.ie, + rientjes@google.com, + agl@us.ibm.com, + apw@canonical.com +Subject: [patch 25/30] hugetlb: restore interleaving of bootmem huge pages (2.6.31) +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=hugetlb-restore-interleaving-of-bootmem-huge-pages.patch +Content-Length: 2330 +Lines: 66 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Lee Schermerhorn + +Not upstream as it is fixed differently in .32 + +I noticed that alloc_bootmem_huge_page() will only advance to the next +node on failure to allocate a huge page. I asked about this on linux-mm +and linux-numa, cc'ing the usual huge page suspects. Mel Gorman +responded: + + I strongly suspect that the same node being used until allocation + failure instead of round-robin is an oversight and not deliberate + at all. It appears to be a side-effect of a fix made way back in + commit 63b4613c3f0d4b724ba259dc6c201bb68b884e1a ["hugetlb: fix + hugepage allocation with memoryless nodes"]. Prior to that patch + it looked like allocations would always round-robin even when + allocation was successful. + +Andy Whitcroft countered that the existing behavior looked like Andi +Kleen's original implementation and suggested that we ask him. We did and +Andy replied that his intention was to interleave the allocations. So, +... + +This patch moves the advance of the hstate next node from which to +allocate up before the test for success of the attempted allocation. This +will unconditionally advance the next node from which to alloc, +interleaving successful allocations over the nodes with sufficient +contiguous memory, and skipping over nodes that fail the huge page +allocation attempt. + +Note that alloc_bootmem_huge_page() will only be called for huge pages of +order > MAX_ORDER. + +Signed-off-by: Lee Schermerhorn +Reviewed-by: Andi Kleen +Cc: Mel Gorman +Cc: David Rientjes +Cc: Adam Litke +Cc: Andy Whitcroft +Cc: Eric Whitney +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + mm/hugetlb.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/mm/hugetlb.c ++++ b/mm/hugetlb.c +@@ -1017,6 +1017,7 @@ int __weak alloc_bootmem_huge_page(struc + NODE_DATA(h->hugetlb_next_nid), + huge_page_size(h), huge_page_size(h), 0); + ++ hstate_next_node(h); + if (addr) { + /* + * Use the beginning of the huge page to store the +@@ -1026,7 +1027,6 @@ int __weak alloc_bootmem_huge_page(struc + m = addr; + goto found; + } +- hstate_next_node(h); + nr_nodes--; + } + return 0; + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.677176498@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:42 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + linuxppc-dev list , + RFeany@mrv.com, + Rex Feany , + Benjamin Herrenschmidt +Subject: [patch 26/30] powerpc/8xx: Fix regression introduced by cache coherency rewrite +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=powerpc-8xx-fix-regression-introduced-by-cache-coherency-rewrite.patch +Content-Length: 2579 +Lines: 75 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Rex Feany + +commit e0908085fc2391c85b85fb814ae1df377c8e0dcb upstream. + +After upgrading to the latest kernel on my mpc875 userspace started +running incredibly slow (hours to get to a shell, even!). +I tracked it down to commit 8d30c14cab30d405a05f2aaceda1e9ad57800f36, +that patch removed a work-around for the 8xx. Adding it +back makes my problem go away. + +Signed-off-by: Rex Feany +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + +--- + arch/powerpc/mm/pgtable.c | 19 ++++++++++++++++--- + 1 file changed, 16 insertions(+), 3 deletions(-) + +--- a/arch/powerpc/mm/pgtable.c ++++ b/arch/powerpc/mm/pgtable.c +@@ -30,6 +30,8 @@ + #include + #include + ++#include "mmu_decl.h" ++ + static DEFINE_PER_CPU(struct pte_freelist_batch *, pte_freelist_cur); + static unsigned long pte_freelist_forced_free; + +@@ -119,7 +121,7 @@ void pte_free_finish(void) + /* + * Handle i/d cache flushing, called from set_pte_at() or ptep_set_access_flags() + */ +-static pte_t do_dcache_icache_coherency(pte_t pte) ++static pte_t do_dcache_icache_coherency(pte_t pte, unsigned long addr) + { + unsigned long pfn = pte_pfn(pte); + struct page *page; +@@ -128,6 +130,17 @@ static pte_t do_dcache_icache_coherency( + return pte; + page = pfn_to_page(pfn); + ++#ifdef CONFIG_8xx ++ /* On 8xx, cache control instructions (particularly ++ * "dcbst" from flush_dcache_icache) fault as write ++ * operation if there is an unpopulated TLB entry ++ * for the address in question. To workaround that, ++ * we invalidate the TLB here, thus avoiding dcbst ++ * misbehaviour. ++ */ ++ _tlbil_va(addr, 0 /* 8xx doesn't care about PID */); ++#endif ++ + if (!PageReserved(page) && !test_bit(PG_arch_1, &page->flags)) { + pr_debug("do_dcache_icache_coherency... flushing\n"); + flush_dcache_icache_page(page); +@@ -198,7 +211,7 @@ void set_pte_at(struct mm_struct *mm, un + */ + pte = __pte(pte_val(pte) & ~_PAGE_HPTEFLAGS); + if (pte_need_exec_flush(pte, 1)) +- pte = do_dcache_icache_coherency(pte); ++ pte = do_dcache_icache_coherency(pte, addr); + + /* Perform the setting of the PTE */ + __set_pte_at(mm, addr, ptep, pte, 0); +@@ -216,7 +229,7 @@ int ptep_set_access_flags(struct vm_area + { + int changed; + if (!dirty && pte_need_exec_flush(entry, 0)) +- entry = do_dcache_icache_coherency(entry); ++ entry = do_dcache_icache_coherency(entry, address); + changed = !pte_same(*(ptep), entry); + if (changed) { + if (!(vma->vm_flags & VM_HUGETLB)) + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:22 2009 +Message-Id: <20091001233322.806126675@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:43 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + linuxppc-dev list , + bernhard.weirich@riedel.net, + RFeany@mrv.com, + Benjamin Herrenschmidt +Subject: [patch 27/30] powerpc: Fix incorrect setting of __HAVE_ARCH_PTE_SPECIAL +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=powerpc-fix-incorrect-setting-of-__have_arch_pte_special.patch +Content-Length: 1021 +Lines: 33 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Weirich, Bernhard + +[I'm going to fix upstream differently, by having all CPU types +actually support _PAGE_SPECIAL, but I prefer the simple and obvious +fix for -stable. -- Ben] + +The test that decides whether to define __HAVE_ARCH_PTE_SPECIAL on +powerpc is bogus and will end up always defining it, even when +_PAGE_SPECIAL is not supported (in which case it's 0) such as on +8xx or 40x processors. + +Signed-off-by: Bernhard Weirich +Signed-off-by: Benjamin Herrenschmidt +Signed-off-by: Greg Kroah-Hartman + + +--- + arch/powerpc/include/asm/pte-common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/powerpc/include/asm/pte-common.h ++++ b/arch/powerpc/include/asm/pte-common.h +@@ -176,7 +176,7 @@ extern unsigned long bad_call_to_PMD_PAG + #define HAVE_PAGE_AGP + + /* Advertise support for _PAGE_SPECIAL */ +-#ifdef _PAGE_SPECIAL ++#if _PAGE_SPECIAL != 0 + #define __HAVE_ARCH_PTE_SPECIAL + #endif + + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:23 2009 +Message-Id: <20091001233322.964817376@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:44 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org, + torvalds@linux-foundation.org +Cc: stable-review@kernel.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + nick@craig-wood.com, + kbowa@tuxedu.org, + penberg@cs.helsinki.fi, + kamezawa.hiroyu@jp.fujitsu.com +Subject: [patch 28/30] /proc/kcore: work around a BUG() +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=proc-kcore-work-around-a-bug.patch +Content-Length: 3295 +Lines: 78 + + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: KAMEZAWA Hiroyuki + +Not upstream due to other fixes in .32 + + +Works around a BUG() which is triggered when the kernel accesses holes in +vmalloc regions. + +BUG: unable to handle kernel paging request at fa54c000 +IP: [] read_kcore+0x260/0x31a +*pde = 3540b067 *pte = 00000000 +Oops: 0000 [#1] SMP +last sysfs file: /sys/devices/pci0000:00/0000:00:1c.2/0000:03:00.0/ieee80211/phy0/rfkill0/state +Modules linked in: fuse sco bridge stp llc bnep l2cap bluetooth sunrpc nf_conntrack_ftp ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 cpufreq_ondemand acpi_cpufreq dm_multipath uinput usb_storage arc4 ecb snd_hda_codec_realtek snd_hda_intel ath5k snd_hda_codec snd_hwdep iTCO_wdt snd_pcm iTCO_vendor_support pcspkr i2c_i801 mac80211 joydev snd_timer serio_raw r8169 snd soundcore mii snd_page_alloc ath cfg80211 ata_generic i915 drm i2c_algo_bit i2c_core video output [last unloaded: scsi_wait_scan] +Sep 4 12:45:16 tuxedu kernel: Pid: 2266, comm: cat Not tainted (2.6.31-rc8 #2) Joybook Lite U101 +EIP: 0060:[] EFLAGS: 00010286 CPU: 0 +EIP is at read_kcore+0x260/0x31a +EAX: f5e5ea00 EBX: fa54d000 ECX: 00000400 EDX: 00001000 +ESI: fa54c000 EDI: f44ad000 EBP: e4533f4c ESP: e4533f24 +DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 +Process cat (pid: 2266, ti=e4532000 task=f09d19a0 task.ti=e4532000) +Stack: +00005000 00000000 f44ad000 09d9c000 00003000 fa54c000 00001000 f6d16f60 + e4520b80 fffffffb e4533f70 c04ef8eb e4533f98 00008000 09d97000 c04f661a + e4520b80 09d97000 c04ef88c e4533f8c c04ba531 e4533f98 c04c0930 e4520b80 +Call Trace: +[] ? proc_reg_read+0x5f/0x73 +[] ? read_kcore+0x0/0x31a +[] ? proc_reg_read+0x0/0x73 +[] ? vfs_read+0x82/0xe1 +[] ? path_put+0x1a/0x1d +[] ? sys_read+0x40/0x62 +[] ? sysenter_do_call+0x12/0x2d +Code: 39 f3 89 ca 0f 43 f3 89 fb 29 f2 29 f3 39 cf 0f 46 d3 29 55 dc 8d 1c 32 f6 40 0c 01 75 18 89 d1 89 f7 c1 e9 02 2b 7d ec 03 7d e0 a5 89 d1 83 e1 03 74 02 f3 a4 8b 00 83 7d dc 00 74 04 85 c0 +EIP: [] read_kcore+0x260/0x31a SS:ESP 0068:e4533f24 +CR2: 00000000fa54c000 + + +To access vmalloc area which may have memory holes, copy_from_user is +useful. So this: + + # cat /proc/kcore > /dev/null + +will not panic. + +This is a minimal fix, suitable for 2.6.30.x and 2.6.31. More extensive +/proc/kcore changes are planned for 2.6.32. + +Signed-off-by: KAMEZAWA Hiroyuki +Tested-by: Nick Craig-Wood +Cc: Pekka Enberg +Reported-by: +Signed-off-by: Andrew Morton +Signed-off-by: Greg Kroah-Hartman + +--- + fs/proc/kcore.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/fs/proc/kcore.c ++++ b/fs/proc/kcore.c +@@ -361,7 +361,13 @@ read_kcore(struct file *file, char __use + /* don't dump ioremap'd stuff! (TA) */ + if (m->flags & VM_IOREMAP) + continue; +- memcpy(elf_buf + (vmstart - start), ++ /* ++ * we may access memory holes, then use ++ * ex_table. checking return value just for ++ * avoid warnings. ++ */ ++ vmsize = __copy_from_user_inatomic( ++ elf_buf + (vmstart - start), + (char *)vmstart, vmsize); + } + read_unlock(&vmlist_lock); + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:23 2009 +Message-Id: <20091001233323.116532896@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:45 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" +Subject: [patch 29/30] PM / PCMCIA: Drop second argument of pcmcia_socket_dev_suspend() +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=pm-pcmcia-drop-second-argument-of-pcmcia_socket_dev_suspend.patch +Content-Length: 8297 +Lines: 232 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Rafael J. Wysocki + +commit 827b4649d4626bf97b203b4bcd69476bb9b4e760 upstream. + +pcmcia_socket_dev_suspend() doesn't use its second argument, so it +may be dropped safely. + +This change is necessary for the subsequent yenta suspend/resume fix. + +Signed-off-by: Rafael J. Wysocki +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pcmcia/at91_cf.c | 2 +- + drivers/pcmcia/au1000_generic.c | 2 +- + drivers/pcmcia/bfin_cf_pcmcia.c | 2 +- + drivers/pcmcia/cs.c | 2 +- + drivers/pcmcia/i82092.c | 2 +- + drivers/pcmcia/i82365.c | 2 +- + drivers/pcmcia/m32r_cfc.c | 2 +- + drivers/pcmcia/m32r_pcc.c | 2 +- + drivers/pcmcia/m8xx_pcmcia.c | 2 +- + drivers/pcmcia/omap_cf.c | 2 +- + drivers/pcmcia/pd6729.c | 2 +- + drivers/pcmcia/pxa2xx_base.c | 2 +- + drivers/pcmcia/sa1100_generic.c | 2 +- + drivers/pcmcia/sa1111_generic.c | 2 +- + drivers/pcmcia/tcic.c | 2 +- + drivers/pcmcia/vrc4171_card.c | 2 +- + drivers/pcmcia/yenta_socket.c | 2 +- + include/pcmcia/ss.h | 2 +- + 18 files changed, 18 insertions(+), 18 deletions(-) + +--- a/drivers/pcmcia/at91_cf.c ++++ b/drivers/pcmcia/at91_cf.c +@@ -363,7 +363,7 @@ static int at91_cf_suspend(struct platfo + struct at91_cf_socket *cf = platform_get_drvdata(pdev); + struct at91_cf_data *board = cf->board; + +- pcmcia_socket_dev_suspend(&pdev->dev, mesg); ++ pcmcia_socket_dev_suspend(&pdev->dev); + if (device_may_wakeup(&pdev->dev)) { + enable_irq_wake(board->det_pin); + if (board->irq_pin) +--- a/drivers/pcmcia/au1000_generic.c ++++ b/drivers/pcmcia/au1000_generic.c +@@ -515,7 +515,7 @@ static int au1x00_drv_pcmcia_probe(struc + static int au1x00_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int au1x00_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/bfin_cf_pcmcia.c ++++ b/drivers/pcmcia/bfin_cf_pcmcia.c +@@ -302,7 +302,7 @@ static int __devexit bfin_cf_remove(stru + + static int bfin_cf_suspend(struct platform_device *pdev, pm_message_t mesg) + { +- return pcmcia_socket_dev_suspend(&pdev->dev, mesg); ++ return pcmcia_socket_dev_suspend(&pdev->dev); + } + + static int bfin_cf_resume(struct platform_device *pdev) +--- a/drivers/pcmcia/cs.c ++++ b/drivers/pcmcia/cs.c +@@ -101,7 +101,7 @@ EXPORT_SYMBOL(pcmcia_socket_list_rwsem); + static int socket_resume(struct pcmcia_socket *skt); + static int socket_suspend(struct pcmcia_socket *skt); + +-int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state) ++int pcmcia_socket_dev_suspend(struct device *dev) + { + struct pcmcia_socket *socket; + +--- a/drivers/pcmcia/i82092.c ++++ b/drivers/pcmcia/i82092.c +@@ -42,7 +42,7 @@ MODULE_DEVICE_TABLE(pci, i82092aa_pci_id + #ifdef CONFIG_PM + static int i82092aa_socket_suspend (struct pci_dev *dev, pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int i82092aa_socket_resume (struct pci_dev *dev) +--- a/drivers/pcmcia/i82365.c ++++ b/drivers/pcmcia/i82365.c +@@ -1241,7 +1241,7 @@ static int pcic_init(struct pcmcia_socke + static int i82365_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int i82365_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/m32r_cfc.c ++++ b/drivers/pcmcia/m32r_cfc.c +@@ -699,7 +699,7 @@ static struct pccard_operations pcc_oper + static int cfc_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int cfc_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/m32r_pcc.c ++++ b/drivers/pcmcia/m32r_pcc.c +@@ -675,7 +675,7 @@ static struct pccard_operations pcc_oper + static int pcc_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int pcc_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/m8xx_pcmcia.c ++++ b/drivers/pcmcia/m8xx_pcmcia.c +@@ -1296,7 +1296,7 @@ static int m8xx_remove(struct of_device + #ifdef CONFIG_PM + static int m8xx_suspend(struct platform_device *pdev, pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&pdev->dev, state); ++ return pcmcia_socket_dev_suspend(&pdev->dev); + } + + static int m8xx_resume(struct platform_device *pdev) +--- a/drivers/pcmcia/omap_cf.c ++++ b/drivers/pcmcia/omap_cf.c +@@ -334,7 +334,7 @@ static int __exit omap_cf_remove(struct + + static int omap_cf_suspend(struct platform_device *pdev, pm_message_t mesg) + { +- return pcmcia_socket_dev_suspend(&pdev->dev, mesg); ++ return pcmcia_socket_dev_suspend(&pdev->dev); + } + + static int omap_cf_resume(struct platform_device *pdev) +--- a/drivers/pcmcia/pd6729.c ++++ b/drivers/pcmcia/pd6729.c +@@ -758,7 +758,7 @@ static void __devexit pd6729_pci_remove( + #ifdef CONFIG_PM + static int pd6729_socket_suspend(struct pci_dev *dev, pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int pd6729_socket_resume(struct pci_dev *dev) +--- a/drivers/pcmcia/pxa2xx_base.c ++++ b/drivers/pcmcia/pxa2xx_base.c +@@ -302,7 +302,7 @@ static int pxa2xx_drv_pcmcia_remove(stru + + static int pxa2xx_drv_pcmcia_suspend(struct platform_device *dev, pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int pxa2xx_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/sa1100_generic.c ++++ b/drivers/pcmcia/sa1100_generic.c +@@ -89,7 +89,7 @@ static int sa11x0_drv_pcmcia_remove(stru + static int sa11x0_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int sa11x0_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/sa1111_generic.c ++++ b/drivers/pcmcia/sa1111_generic.c +@@ -159,7 +159,7 @@ static int __devexit pcmcia_remove(struc + + static int pcmcia_suspend(struct sa1111_dev *dev, pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int pcmcia_resume(struct sa1111_dev *dev) +--- a/drivers/pcmcia/tcic.c ++++ b/drivers/pcmcia/tcic.c +@@ -366,7 +366,7 @@ static int __init get_tcic_id(void) + static int tcic_drv_pcmcia_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int tcic_drv_pcmcia_resume(struct platform_device *dev) +--- a/drivers/pcmcia/vrc4171_card.c ++++ b/drivers/pcmcia/vrc4171_card.c +@@ -707,7 +707,7 @@ __setup("vrc4171_card=", vrc4171_card_se + static int vrc4171_card_suspend(struct platform_device *dev, + pm_message_t state) + { +- return pcmcia_socket_dev_suspend(&dev->dev, state); ++ return pcmcia_socket_dev_suspend(&dev->dev); + } + + static int vrc4171_card_resume(struct platform_device *dev) +--- a/drivers/pcmcia/yenta_socket.c ++++ b/drivers/pcmcia/yenta_socket.c +@@ -1230,7 +1230,7 @@ static int yenta_dev_suspend (struct pci + struct yenta_socket *socket = pci_get_drvdata(dev); + int ret; + +- ret = pcmcia_socket_dev_suspend(&dev->dev, state); ++ ret = pcmcia_socket_dev_suspend(&dev->dev); + + if (socket) { + if (socket->type && socket->type->save_state) +--- a/include/pcmcia/ss.h ++++ b/include/pcmcia/ss.h +@@ -279,7 +279,7 @@ extern struct pccard_resource_ops pccard + extern struct pccard_resource_ops pccard_nonstatic_ops; + + /* socket drivers are expected to use these callbacks in their .drv struct */ +-extern int pcmcia_socket_dev_suspend(struct device *dev, pm_message_t state); ++extern int pcmcia_socket_dev_suspend(struct device *dev); + extern int pcmcia_socket_dev_resume(struct device *dev); + + /* socket drivers use this callback in their IRQ handler */ + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:23 2009 +Message-Id: <20091001233323.256648044@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:46 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk, + "Rafael J. Wysocki" +Subject: [patch 30/30] PM / yenta: Fix cardbus suspend/resume regression +References: <20091001233116.947658905@mini.kroah.org> +Content-Disposition: inline; filename=pm-yenta-fix-cardbus-suspend-resume-regression.patch +Content-Length: 4773 +Lines: 154 + +2.6.30-stable review patch. If anyone has any objections, please let us know. + +------------------ +From: Rafael J. Wysocki + +commit 0c570cdeb8fdfcb354a3e9cd81bfc6a09c19de0c upstream. + +Since 2.6.29 the PCI PM core have been restoring the standard +configuration registers of PCI devices in the early phase of +resume. In particular, PCI devices without drivers have been handled +this way since commit 355a72d75b3b4f4877db4c9070c798238028ecb5 +(PCI: Rework default handling of suspend and resume). Unfortunately, +this leads to post-resume problems with CardBus devices which cannot +be accessed in the early phase of resume, because the sockets they +are on have not been woken up yet at that point. + +To solve this problem, move the yenta socket resume to the early +phase of resume and, analogously, move the suspend of it to the late +phase of suspend. Additionally, remove some unnecessary PCI code +from the yenta socket's resume routine. + +Fixes http://bugzilla.kernel.org/show_bug.cgi?id=13092, which is a +post-2.6.28 regression. + +Signed-off-by: Rafael J. Wysocki +Reported-by: Florian +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/pcmcia/yenta_socket.c | 92 ++++++++++++++++++++++-------------------- + 1 file changed, 50 insertions(+), 42 deletions(-) + +--- a/drivers/pcmcia/yenta_socket.c ++++ b/drivers/pcmcia/yenta_socket.c +@@ -1225,60 +1225,71 @@ static int __devinit yenta_probe (struct + } + + #ifdef CONFIG_PM +-static int yenta_dev_suspend (struct pci_dev *dev, pm_message_t state) ++static int yenta_dev_suspend_noirq(struct device *dev) + { +- struct yenta_socket *socket = pci_get_drvdata(dev); ++ struct pci_dev *pdev = to_pci_dev(dev); ++ struct yenta_socket *socket = pci_get_drvdata(pdev); + int ret; + +- ret = pcmcia_socket_dev_suspend(&dev->dev); ++ ret = pcmcia_socket_dev_suspend(dev); + +- if (socket) { +- if (socket->type && socket->type->save_state) +- socket->type->save_state(socket); +- +- /* FIXME: pci_save_state needs to have a better interface */ +- pci_save_state(dev); +- pci_read_config_dword(dev, 16*4, &socket->saved_state[0]); +- pci_read_config_dword(dev, 17*4, &socket->saved_state[1]); +- pci_disable_device(dev); +- +- /* +- * Some laptops (IBM T22) do not like us putting the Cardbus +- * bridge into D3. At a guess, some other laptop will +- * probably require this, so leave it commented out for now. +- */ +- /* pci_set_power_state(dev, 3); */ +- } ++ if (!socket) ++ return ret; ++ ++ if (socket->type && socket->type->save_state) ++ socket->type->save_state(socket); ++ ++ pci_save_state(pdev); ++ pci_read_config_dword(pdev, 16*4, &socket->saved_state[0]); ++ pci_read_config_dword(pdev, 17*4, &socket->saved_state[1]); ++ pci_disable_device(pdev); ++ ++ /* ++ * Some laptops (IBM T22) do not like us putting the Cardbus ++ * bridge into D3. At a guess, some other laptop will ++ * probably require this, so leave it commented out for now. ++ */ ++ /* pci_set_power_state(dev, 3); */ + + return ret; + } + +- +-static int yenta_dev_resume (struct pci_dev *dev) ++static int yenta_dev_resume_noirq(struct device *dev) + { +- struct yenta_socket *socket = pci_get_drvdata(dev); ++ struct pci_dev *pdev = to_pci_dev(dev); ++ struct yenta_socket *socket = pci_get_drvdata(pdev); ++ int ret; + +- if (socket) { +- int rc; ++ if (!socket) ++ return 0; + +- pci_set_power_state(dev, 0); +- /* FIXME: pci_restore_state needs to have a better interface */ +- pci_restore_state(dev); +- pci_write_config_dword(dev, 16*4, socket->saved_state[0]); +- pci_write_config_dword(dev, 17*4, socket->saved_state[1]); ++ pci_write_config_dword(pdev, 16*4, socket->saved_state[0]); ++ pci_write_config_dword(pdev, 17*4, socket->saved_state[1]); + +- rc = pci_enable_device(dev); +- if (rc) +- return rc; ++ ret = pci_enable_device(pdev); ++ if (ret) ++ return ret; + +- pci_set_master(dev); ++ pci_set_master(pdev); + +- if (socket->type && socket->type->restore_state) +- socket->type->restore_state(socket); +- } ++ if (socket->type && socket->type->restore_state) ++ socket->type->restore_state(socket); + +- return pcmcia_socket_dev_resume(&dev->dev); ++ return pcmcia_socket_dev_resume(dev); + } ++ ++static struct dev_pm_ops yenta_pm_ops = { ++ .suspend_noirq = yenta_dev_suspend_noirq, ++ .resume_noirq = yenta_dev_resume_noirq, ++ .freeze_noirq = yenta_dev_suspend_noirq, ++ .thaw_noirq = yenta_dev_resume_noirq, ++ .poweroff_noirq = yenta_dev_suspend_noirq, ++ .restore_noirq = yenta_dev_resume_noirq, ++}; ++ ++#define YENTA_PM_OPS (¥ta_pm_ops) ++#else ++#define YENTA_PM_OPS NULL + #endif + + #define CB_ID(vend,dev,type) \ +@@ -1376,10 +1387,7 @@ static struct pci_driver yenta_cardbus_d + .id_table = yenta_table, + .probe = yenta_probe, + .remove = __devexit_p(yenta_close), +-#ifdef CONFIG_PM +- .suspend = yenta_dev_suspend, +- .resume = yenta_dev_resume, +-#endif ++ .driver.pm = YENTA_PM_OPS, + }; + + + + +From gregkh@mini.kroah.org Thu Oct 1 16:33:18 2009 +Message-Id: <20091001233116.947658905@mini.kroah.org> +User-Agent: quilt/0.48-1 +Date: Thu, 01 Oct 2009 16:31:16 -0700 +From: Greg KH +To: linux-kernel@vger.kernel.org, + stable@kernel.org +Cc: stable-review@kernel.org, + torvalds@linux-foundation.org, + akpm@linux-foundation.org, + alan@lxorguk.ukuu.org.uk +Subject: [patch 00/30] 2.6.30.9-stable review +Content-Length: 3469 +Lines: 73 + +NOTE: This is going to be the last .30 kernel release unless something +odd happens. Everyone should move to the .31 kernel release soon. + +This is the start of the stable review cycle for the 2.6.30.9 release. +There are 30 patches in this series, all will be posted as a response to +this one. If anyone has any issues with these being applied, please let +us know. If anyone is a maintainer of the proper subsystem, and wants +to add a Signed-off-by: line to the patch, please respond with it. + +These patches are sent out with a number of different people on the Cc: +line. If you wish to be a reviewer, please email stable@kernel.org to +add your name to the list. If you want to be off the reviewer list, +also email us. + +Responses should be made by Saturday, October 3, 2009 23:00:00 UTC. +Anything received after that time might be too late. + +The whole patch series can be found in one patch at: + kernel.org/pub/linux/kernel/v2.6/stable-review/patch-2.6.30.9-rc1.gz +and the diffstat can be found below. + + +thanks, + +greg k-h + +------ + + Makefile | 2 +- + arch/powerpc/include/asm/pte-common.h | 2 +- + arch/powerpc/mm/pgtable.c | 19 +++++- + arch/x86/include/asm/kvm_host.h | 1 + + arch/x86/kernel/cpu/cpufreq/powernow-k8.c | 15 +++-- + arch/x86/kernel/kvmclock.c | 4 +- + arch/x86/kvm/lapic.c | 9 +++ + arch/x86/kvm/mmu.c | 9 +-- + arch/x86/kvm/vmx.c | 11 ++-- + arch/x86/kvm/x86.c | 31 ++++++++-- + drivers/acpi/pci_slot.c | 4 +- + drivers/ata/ahci.c | 4 +- + drivers/net/wireless/p54/p54usb.c | 1 + + drivers/pcmcia/at91_cf.c | 2 +- + drivers/pcmcia/au1000_generic.c | 2 +- + drivers/pcmcia/bfin_cf_pcmcia.c | 2 +- + drivers/pcmcia/cs.c | 2 +- + drivers/pcmcia/i82092.c | 2 +- + drivers/pcmcia/i82365.c | 2 +- + drivers/pcmcia/m32r_cfc.c | 2 +- + drivers/pcmcia/m32r_pcc.c | 2 +- + drivers/pcmcia/m8xx_pcmcia.c | 2 +- + drivers/pcmcia/omap_cf.c | 2 +- + drivers/pcmcia/pd6729.c | 2 +- + drivers/pcmcia/pxa2xx_base.c | 2 +- + drivers/pcmcia/sa1100_generic.c | 2 +- + drivers/pcmcia/sa1111_generic.c | 2 +- + drivers/pcmcia/tcic.c | 2 +- + drivers/pcmcia/vrc4171_card.c | 2 +- + drivers/pcmcia/yenta_socket.c | 88 ++++++++++++++++------------- + fs/cifs/cifsglob.h | 4 +- + fs/inode.c | 14 +++-- + fs/nilfs2/btnode.c | 1 + + fs/proc/kcore.c | 8 ++- + fs/proc/uptime.c | 7 ++- + include/linux/kvm_para.h | 1 + + include/pcmcia/ss.h | 2 +- + mm/hugetlb.c | 2 +- + net/ax25/af_ax25.c | 2 +- + net/bridge/br_netfilter.c | 2 +- + net/bridge/netfilter/ebt_ulog.c | 2 +- + net/ipv4/netfilter/nf_nat_core.c | 2 +- + net/packet/af_packet.c | 4 +- + scripts/kallsyms.c | 2 +- + 44 files changed, 172 insertions(+), 113 deletions(-) + diff --git a/queue-2.6.30/net-ax25-fix-signed-comparison-in-the-sockopt-handler.patch b/review-2.6.30/net-ax25-fix-signed-comparison-in-the-sockopt-handler.patch similarity index 100% rename from queue-2.6.30/net-ax25-fix-signed-comparison-in-the-sockopt-handler.patch rename to review-2.6.30/net-ax25-fix-signed-comparison-in-the-sockopt-handler.patch diff --git a/queue-2.6.30/net-make-the-copy-length-in-af_packet-sockopt-handler-unsigned.patch b/review-2.6.30/net-make-the-copy-length-in-af_packet-sockopt-handler-unsigned.patch similarity index 100% rename from queue-2.6.30/net-make-the-copy-length-in-af_packet-sockopt-handler-unsigned.patch rename to review-2.6.30/net-make-the-copy-length-in-af_packet-sockopt-handler-unsigned.patch diff --git a/queue-2.6.30/netfilter-bridge-refcount-fix.patch b/review-2.6.30/netfilter-bridge-refcount-fix.patch similarity index 100% rename from queue-2.6.30/netfilter-bridge-refcount-fix.patch rename to review-2.6.30/netfilter-bridge-refcount-fix.patch diff --git a/queue-2.6.30/netfilter-ebt_ulog-fix-checkentry-return-value.patch b/review-2.6.30/netfilter-ebt_ulog-fix-checkentry-return-value.patch similarity index 100% rename from queue-2.6.30/netfilter-ebt_ulog-fix-checkentry-return-value.patch rename to review-2.6.30/netfilter-ebt_ulog-fix-checkentry-return-value.patch diff --git a/queue-2.6.30/netfilter-nf_nat-fix-inverted-logic-for-persistent-nat-mappings.patch b/review-2.6.30/netfilter-nf_nat-fix-inverted-logic-for-persistent-nat-mappings.patch similarity index 100% rename from queue-2.6.30/netfilter-nf_nat-fix-inverted-logic-for-persistent-nat-mappings.patch rename to review-2.6.30/netfilter-nf_nat-fix-inverted-logic-for-persistent-nat-mappings.patch diff --git a/queue-2.6.30/nilfs2-fix-missing-zero-fill-initialization-of-btree-node-cache.patch b/review-2.6.30/nilfs2-fix-missing-zero-fill-initialization-of-btree-node-cache.patch similarity index 100% rename from queue-2.6.30/nilfs2-fix-missing-zero-fill-initialization-of-btree-node-cache.patch rename to review-2.6.30/nilfs2-fix-missing-zero-fill-initialization-of-btree-node-cache.patch diff --git a/queue-2.6.30/p54usb-add-zcomax-xg-705a-usbid.patch b/review-2.6.30/p54usb-add-zcomax-xg-705a-usbid.patch similarity index 100% rename from queue-2.6.30/p54usb-add-zcomax-xg-705a-usbid.patch rename to review-2.6.30/p54usb-add-zcomax-xg-705a-usbid.patch diff --git a/queue-2.6.30/pm-pcmcia-drop-second-argument-of-pcmcia_socket_dev_suspend.patch b/review-2.6.30/pm-pcmcia-drop-second-argument-of-pcmcia_socket_dev_suspend.patch similarity index 100% rename from queue-2.6.30/pm-pcmcia-drop-second-argument-of-pcmcia_socket_dev_suspend.patch rename to review-2.6.30/pm-pcmcia-drop-second-argument-of-pcmcia_socket_dev_suspend.patch diff --git a/queue-2.6.30/pm-yenta-fix-cardbus-suspend-resume-regression.patch b/review-2.6.30/pm-yenta-fix-cardbus-suspend-resume-regression.patch similarity index 100% rename from queue-2.6.30/pm-yenta-fix-cardbus-suspend-resume-regression.patch rename to review-2.6.30/pm-yenta-fix-cardbus-suspend-resume-regression.patch diff --git a/queue-2.6.30/powerpc-8xx-fix-regression-introduced-by-cache-coherency-rewrite.patch b/review-2.6.30/powerpc-8xx-fix-regression-introduced-by-cache-coherency-rewrite.patch similarity index 100% rename from queue-2.6.30/powerpc-8xx-fix-regression-introduced-by-cache-coherency-rewrite.patch rename to review-2.6.30/powerpc-8xx-fix-regression-introduced-by-cache-coherency-rewrite.patch diff --git a/queue-2.6.30/powerpc-fix-incorrect-setting-of-__have_arch_pte_special.patch b/review-2.6.30/powerpc-fix-incorrect-setting-of-__have_arch_pte_special.patch similarity index 100% rename from queue-2.6.30/powerpc-fix-incorrect-setting-of-__have_arch_pte_special.patch rename to review-2.6.30/powerpc-fix-incorrect-setting-of-__have_arch_pte_special.patch diff --git a/queue-2.6.30/proc-kcore-work-around-a-bug.patch b/review-2.6.30/proc-kcore-work-around-a-bug.patch similarity index 100% rename from queue-2.6.30/proc-kcore-work-around-a-bug.patch rename to review-2.6.30/proc-kcore-work-around-a-bug.patch diff --git a/queue-2.6.30/re-enable-lanman-security.patch b/review-2.6.30/re-enable-lanman-security.patch similarity index 100% rename from queue-2.6.30/re-enable-lanman-security.patch rename to review-2.6.30/re-enable-lanman-security.patch diff --git a/queue-2.6.30/revert-kvm-x86-check-for-cr3-validity-in-ioctl_set_sregs.patch b/review-2.6.30/revert-kvm-x86-check-for-cr3-validity-in-ioctl_set_sregs.patch similarity index 100% rename from queue-2.6.30/revert-kvm-x86-check-for-cr3-validity-in-ioctl_set_sregs.patch rename to review-2.6.30/revert-kvm-x86-check-for-cr3-validity-in-ioctl_set_sregs.patch diff --git a/queue-2.6.30/series b/review-2.6.30/series similarity index 100% rename from queue-2.6.30/series rename to review-2.6.30/series