From 1fbc8d01ffc640670447becbe10a058f0eae450a Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 3 Apr 2012 02:52:51 +0000 Subject: [PATCH] Update to 3.2.14 Drop some patches that are included in this. svn path=/dists/sid/linux-2.6/; revision=18899 --- debian/changelog | 33 +++- ...-pcie-devices-with-non-pcie-children.patch | 71 --------- ...rious-error-in-cifs_push_posix_locks.patch | 67 -------- ...truct-x86_emulate_ops-with-get_cpuid.patch | 78 ---------- ...-missing-checks-in-syscall-emulation.patch | 145 ------------------ debian/patches/series/base | 4 - 6 files changed, 29 insertions(+), 369 deletions(-) delete mode 100644 debian/patches/bugfix/all/ASPM-Fix-pcie-devices-with-non-pcie-children.patch delete mode 100644 debian/patches/bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch delete mode 100644 debian/patches/bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch delete mode 100644 debian/patches/bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch diff --git a/debian/changelog b/debian/changelog index 05714bd73..bc7666658 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,11 +1,36 @@ -linux-2.6 (3.2.13-2) UNRELEASED; urgency=low +linux-2.6 (3.2.14-1) UNRELEASED; urgency=low + + * New upstream stable update: + http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.14 + - mm: thp: fix pmd_bad() triggering in code paths holding mmap_sem + read mode (CVE-2012-1179) + - hugetlbfs: avoid taking i_mutex from hugetlbfs_read() + - md/bitmap: ensure to load bitmap when creating via sysfs + (Closes: #661558) + - md: dont set md arrays to readonly on shutdown + - md/raid1,raid10: avoid deadlock during resync/recovery (Closes: #584881) + - md: fix clearing of the changed flags for the bad blocks list + - xfs: fix inode lookup race + - sysctl: protect poll() in entries that may go away + - NFSv4: Rate limit the state manager warning messages (Closes: #666121) + - jbd2: clear BH_Delay & BH_Unwritten in journal_unmap_buffer + - ext4: ignore EXT4_INODE_JOURNAL_DATA flag with delalloc + - ext4: fix race between sync and completed io work + - ext4: check for zero length extent + - vfs: fix d_ancestor() case in d_materialize_unique + - udf: Fix deadlock in udf_release_file() + - dm crypt: add missing error handling + - dm thin: fix stacked bi_next usage + - xfs: Fix oops on IO error during xlog_recover_process_iunlinks() + - NFSv4: Fix two infinite loops in the mount code + - drm/i915: suspend fbdev device around suspend/hibernate + - net: fix a potential rcu_read_lock() imbalance in rt6_fill_node() + - [x86] tls: Off by one limit check + - PCI: ASPM: Fix pcie devices with non-pcie children (Closes: #665420) [ Jonathan Nieder ] * ata: Enable PATA_IT8213 as module (Closes: #666506) - [ Ben Hutchings ] - * PCI: ASPM: Fix pcie devices with non-pcie children (Closes: #665420) - -- Ben Hutchings Sun, 01 Apr 2012 06:33:00 +0100 linux-2.6 (3.2.13-1) unstable; urgency=low diff --git a/debian/patches/bugfix/all/ASPM-Fix-pcie-devices-with-non-pcie-children.patch b/debian/patches/bugfix/all/ASPM-Fix-pcie-devices-with-non-pcie-children.patch deleted file mode 100644 index 685117d83..000000000 --- a/debian/patches/bugfix/all/ASPM-Fix-pcie-devices-with-non-pcie-children.patch +++ /dev/null @@ -1,71 +0,0 @@ -From: Matthew Garrett -Date: Tue, 27 Mar 2012 10:17:41 -0400 -Subject: [PATCH] ASPM: Fix pcie devices with non-pcie children - -commit c9651e70ad0aa499814817cbf3cc1d0b806ed3a1 upstream. - -Since 3.2.12 and 3.3, some systems are failing to boot with a BUG_ON. -Some other systems using the pata_jmicron driver fail to boot because no -disks are detected. Passing pcie_aspm=force on the kernel command line -works around it. - -The cause: commit 4949be16822e ("PCI: ignore pre-1.1 ASPM quirking when -ASPM is disabled") changed the behaviour of pcie_aspm_sanity_check() to -always return 0 if aspm is disabled, in order to avoid cases where we -changed ASPM state on pre-PCIe 1.1 devices. - -This skipped the secondary function of pcie_aspm_sanity_check which was -to avoid us enabling ASPM on devices that had non-PCIe children, causing -trouble later on. Move the aspm_disabled check so we continue to honour -that scenario. - -Addresses https://bugzilla.kernel.org/show_bug.cgi?id=42979 and - http://bugs.debian.org/665420 - -Reported-by: Romain Francoise # kernel panic -Reported-by: Chris Holland # disk detection trouble -Signed-off-by: Matthew Garrett -Cc: stable@vger.kernel.org -Tested-by: Hatem Masmoudi # Dell Latitude E5520 -Tested-by: janek # pata_jmicron with JMB362/JMB363 -[jn: with more symptoms in log message] -Signed-off-by: Jonathan Nieder -Signed-off-by: Linus Torvalds ---- - drivers/pci/pcie/aspm.c | 13 ++++++++++--- - 1 file changed, 10 insertions(+), 3 deletions(-) - -diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c -index 4bdef24..b500840 100644 ---- a/drivers/pci/pcie/aspm.c -+++ b/drivers/pci/pcie/aspm.c -@@ -508,9 +508,6 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev) - int pos; - u32 reg32; - -- if (aspm_disabled) -- return 0; -- - /* - * Some functions in a slot might not all be PCIe functions, - * very strange. Disable ASPM for the whole slot -@@ -519,6 +516,16 @@ static int pcie_aspm_sanity_check(struct pci_dev *pdev) - pos = pci_pcie_cap(child); - if (!pos) - return -EINVAL; -+ -+ /* -+ * If ASPM is disabled then we're not going to change -+ * the BIOS state. It's safe to continue even if it's a -+ * pre-1.1 device -+ */ -+ -+ if (aspm_disabled) -+ continue; -+ - /* - * Disable ASPM for pre-1.1 PCIe device, we follow MS to use - * RBER bit to determine if a function is 1.1 version device --- -1.7.9.5 - diff --git a/debian/patches/bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch b/debian/patches/bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch deleted file mode 100644 index 3ecd46809..000000000 --- a/debian/patches/bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch +++ /dev/null @@ -1,67 +0,0 @@ -From ce85852b90a214cf577fc1b4f49d99fd7e98784a Mon Sep 17 00:00:00 2001 -From: Pavel Shilovsky -Date: Sat, 17 Mar 2012 09:46:55 +0300 -Subject: [PATCH] CIFS: Fix a spurious error in cifs_push_posix_locks - -Signed-off-by: Pavel Shilovsky -Reviewed-by: Jeff Layton -Reported-by: Ben Hutchings -Signed-off-by: Steve French ---- - fs/cifs/file.c | 19 ++++++++++--------- - 1 files changed, 10 insertions(+), 9 deletions(-) - -diff --git a/fs/cifs/file.c b/fs/cifs/file.c -index 5e64748..8e02dbd 100644 ---- a/fs/cifs/file.c -+++ b/fs/cifs/file.c -@@ -960,9 +960,9 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) - INIT_LIST_HEAD(&locks_to_send); - - /* -- * Allocating count locks is enough because no locks can be added to -- * the list while we are holding cinode->lock_mutex that protects -- * locking operations of this inode. -+ * Allocating count locks is enough because no FL_POSIX locks can be -+ * added to the list while we are holding cinode->lock_mutex that -+ * protects locking operations of this inode. - */ - for (; i < count; i++) { - lck = kmalloc(sizeof(struct lock_to_push), GFP_KERNEL); -@@ -973,18 +973,20 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) - list_add_tail(&lck->llist, &locks_to_send); - } - -- i = 0; - el = locks_to_send.next; - lock_flocks(); - cifs_for_each_lock(cfile->dentry->d_inode, before) { -+ flock = *before; -+ if ((flock->fl_flags & FL_POSIX) == 0) -+ continue; - if (el == &locks_to_send) { -- /* something is really wrong */ -+ /* -+ * The list ended. We don't have enough allocated -+ * structures - something is really wrong. -+ */ - cERROR(1, "Can't push all brlocks!"); - break; - } -- flock = *before; -- if ((flock->fl_flags & FL_POSIX) == 0) -- continue; - length = 1 + flock->fl_end - flock->fl_start; - if (flock->fl_type == F_RDLCK || flock->fl_type == F_SHLCK) - type = CIFS_RDLCK; -@@ -996,7 +998,6 @@ cifs_push_posix_locks(struct cifsFileInfo *cfile) - lck->length = length; - lck->type = type; - lck->offset = flock->fl_start; -- i++; - el = el->next; - } - unlock_flocks(); --- -1.7.0.4 - diff --git a/debian/patches/bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch b/debian/patches/bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch deleted file mode 100644 index 21546f4e5..000000000 --- a/debian/patches/bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch +++ /dev/null @@ -1,78 +0,0 @@ -From: =?utf8?q?Stephan=20B=C3=A4rwolf?= -Date: Thu, 12 Jan 2012 16:43:03 +0100 -Subject: [PATCH] KVM: x86: extend "struct x86_emulate_ops" with "get_cpuid" - -commit 0769c5de24621141c953fbe1f943582d37cb4244 upstream. - -In order to be able to proceed checks on CPU-specific properties -within the emulator, function "get_cpuid" is introduced. -With "get_cpuid" it is possible to virtually call the guests -"cpuid"-opcode without changing the VM's context. - -[mtosatti: cleanup/beautify code] - -Signed-off-by: Stephan Baerwolf -Signed-off-by: Marcelo Tosatti ---- - arch/x86/include/asm/kvm_emulate.h | 3 +++ - arch/x86/kvm/x86.c | 23 +++++++++++++++++++++++ - 2 files changed, 26 insertions(+), 0 deletions(-) - -diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h -index ab4092e..c8b2868 100644 ---- a/arch/x86/include/asm/kvm_emulate.h -+++ b/arch/x86/include/asm/kvm_emulate.h -@@ -190,6 +190,9 @@ struct x86_emulate_ops { - int (*intercept)(struct x86_emulate_ctxt *ctxt, - struct x86_instruction_info *info, - enum x86_intercept_stage stage); -+ -+ bool (*get_cpuid)(struct x86_emulate_ctxt *ctxt, -+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx); - }; - - typedef u32 __attribute__((vector_size(16))) sse128_t; -diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index f0fa3fb..c95ca2d 100644 ---- a/arch/x86/kvm/x86.c -+++ b/arch/x86/kvm/x86.c -@@ -4205,6 +4205,28 @@ static int emulator_intercept(struct x86_emulate_ctxt *ctxt, - return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage); - } - -+static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt, -+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx) -+{ -+ struct kvm_cpuid_entry2 *cpuid = NULL; -+ -+ if (eax && ecx) -+ cpuid = kvm_find_cpuid_entry(emul_to_vcpu(ctxt), -+ *eax, *ecx); -+ -+ if (cpuid) { -+ *eax = cpuid->eax; -+ *ecx = cpuid->ecx; -+ if (ebx) -+ *ebx = cpuid->ebx; -+ if (edx) -+ *edx = cpuid->edx; -+ return true; -+ } -+ -+ return false; -+} -+ - static struct x86_emulate_ops emulate_ops = { - .read_std = kvm_read_guest_virt_system, - .write_std = kvm_write_guest_virt_system, -@@ -4236,6 +4258,7 @@ static struct x86_emulate_ops emulate_ops = { - .get_fpu = emulator_get_fpu, - .put_fpu = emulator_put_fpu, - .intercept = emulator_intercept, -+ .get_cpuid = emulator_get_cpuid, - }; - - static void cache_all_regs(struct kvm_vcpu *vcpu) --- -1.7.6.5 - diff --git a/debian/patches/bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch b/debian/patches/bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch deleted file mode 100644 index 73f218ed8..000000000 --- a/debian/patches/bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch +++ /dev/null @@ -1,145 +0,0 @@ -From: =?utf8?q?Stephan=20B=C3=A4rwolf?= -Date: Thu, 12 Jan 2012 16:43:04 +0100 -Subject: [PATCH] KVM: x86: fix missing checks in syscall emulation - -commit e28ba7bb020f07193bc000453c8775e9d2c0dda7 upstream. - -On hosts without this patch, 32bit guests will crash (and 64bit guests -may behave in a wrong way) for example by simply executing following -nasm-demo-application: - - [bits 32] - global _start - SECTION .text - _start: syscall - -(I tested it with winxp and linux - both always crashed) - - Disassembly of section .text: - - 00000000 <_start>: - 0: 0f 05 syscall - -The reason seems a missing "invalid opcode"-trap (int6) for the -syscall opcode "0f05", which is not available on Intel CPUs -within non-longmodes, as also on some AMD CPUs within legacy-mode. -(depending on CPU vendor, MSR_EFER and cpuid) - -Because previous mentioned OSs may not engage corresponding -syscall target-registers (STAR, LSTAR, CSTAR), they remain -NULL and (non trapping) syscalls are leading to multiple -faults and finally crashs. - -Depending on the architecture (AMD or Intel) pretended by -guests, various checks according to vendor's documentation -are implemented to overcome the current issue and behave -like the CPUs physical counterparts. - -[mtosatti: cleanup/beautify code] - -Signed-off-by: Stephan Baerwolf -Signed-off-by: Marcelo Tosatti ---- - arch/x86/include/asm/kvm_emulate.h | 13 +++++++++ - arch/x86/kvm/emulate.c | 51 ++++++++++++++++++++++++++++++++++++ - 2 files changed, 64 insertions(+), 0 deletions(-) - -diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h -index c8b2868..7b9cfc4 100644 ---- a/arch/x86/include/asm/kvm_emulate.h -+++ b/arch/x86/include/asm/kvm_emulate.h -@@ -301,6 +301,19 @@ struct x86_emulate_ctxt { - #define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \ - X86EMUL_MODE_PROT64) - -+/* CPUID vendors */ -+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541 -+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163 -+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_edx 0x69746e65 -+ -+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx 0x69444d41 -+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574 -+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273 -+ -+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547 -+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e -+#define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69 -+ - enum x86_intercept_stage { - X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */ - X86_ICPT_PRE_EXCEPT, -diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 05a562b..0982507 100644 ---- a/arch/x86/kvm/emulate.c -+++ b/arch/x86/kvm/emulate.c -@@ -1891,6 +1891,51 @@ setup_syscalls_segments(struct x86_emulate_ctxt *ctxt, - ss->p = 1; - } - -+static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt) -+{ -+ struct x86_emulate_ops *ops = ctxt->ops; -+ u32 eax, ebx, ecx, edx; -+ -+ /* -+ * syscall should always be enabled in longmode - so only become -+ * vendor specific (cpuid) if other modes are active... -+ */ -+ if (ctxt->mode == X86EMUL_MODE_PROT64) -+ return true; -+ -+ eax = 0x00000000; -+ ecx = 0x00000000; -+ if (ops->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx)) { -+ /* -+ * Intel ("GenuineIntel") -+ * remark: Intel CPUs only support "syscall" in 64bit -+ * longmode. Also an 64bit guest with a -+ * 32bit compat-app running will #UD !! While this -+ * behaviour can be fixed (by emulating) into AMD -+ * response - CPUs of AMD can't behave like Intel. -+ */ -+ if (ebx == X86EMUL_CPUID_VENDOR_GenuineIntel_ebx && -+ ecx == X86EMUL_CPUID_VENDOR_GenuineIntel_ecx && -+ edx == X86EMUL_CPUID_VENDOR_GenuineIntel_edx) -+ return false; -+ -+ /* AMD ("AuthenticAMD") */ -+ if (ebx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx && -+ ecx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx && -+ edx == X86EMUL_CPUID_VENDOR_AuthenticAMD_edx) -+ return true; -+ -+ /* AMD ("AMDisbetter!") */ -+ if (ebx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx && -+ ecx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx && -+ edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx) -+ return true; -+ } -+ -+ /* default: (not Intel, not AMD), apply Intel's stricter rules... */ -+ return false; -+} -+ - static int em_syscall(struct x86_emulate_ctxt *ctxt) - { - struct x86_emulate_ops *ops = ctxt->ops; -@@ -1904,9 +1949,15 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt) - ctxt->mode == X86EMUL_MODE_VM86) - return emulate_ud(ctxt); - -+ if (!(em_syscall_is_enabled(ctxt))) -+ return emulate_ud(ctxt); -+ - ops->get_msr(ctxt, MSR_EFER, &efer); - setup_syscalls_segments(ctxt, &cs, &ss); - -+ if (!(efer & EFER_SCE)) -+ return emulate_ud(ctxt); -+ - ops->get_msr(ctxt, MSR_STAR, &msr_data); - msr_data >>= 32; - cs_sel = (u16)(msr_data & 0xfffc); --- -1.7.6.5 - diff --git a/debian/patches/series/base b/debian/patches/series/base index b60ef811f..20d549a5b 100644 --- a/debian/patches/series/base +++ b/debian/patches/series/base @@ -67,8 +67,6 @@ + features/all/Input-ALPS-add-semi-MT-support-for-v3-protocol.patch + bugfix/x86/KVM-nVMX-Add-KVM_REQ_IMMEDIATE_EXIT.patch + bugfix/x86/KVM-nVMX-Fix-warning-causing-idt-vectoring-info-beha.patch -+ bugfix/x86/KVM-x86-extend-struct-x86_emulate_ops-with-get_cpuid.patch -+ bugfix/x86/KVM-x86-fix-missing-checks-in-syscall-emulation.patch + features/all/hwmon-it87-Add-IT8728F-support.patch + bugfix/arm/ARM-ixp4xx-mtd-oops.patch @@ -82,6 +80,4 @@ + features/all/fs-hardlink-creation-restrictions-fix.patch + features/all/fs-hardlink-creation-restriction-cleanup.patch + bugfix/all/Don-t-limit-non-nested-epoll-paths.patch -+ bugfix/all/CIFS-Fix-a-spurious-error-in-cifs_push_posix_locks.patch + bugfix/all/kbuild-do-not-check-for-ancient-modutils-tools.patch -+ bugfix/all/ASPM-Fix-pcie-devices-with-non-pcie-children.patch