Update to 3.2.14
Drop some patches that are included in this. svn path=/dists/sid/linux-2.6/; revision=18899
This commit is contained in:
parent
5da05a3637
commit
1fbc8d01ff
|
@ -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 <ben@decadent.org.uk> Sun, 01 Apr 2012 06:33:00 +0100
|
||||
|
||||
linux-2.6 (3.2.13-1) unstable; urgency=low
|
||||
|
|
|
@ -1,71 +0,0 @@
|
|||
From: Matthew Garrett <mjg@redhat.com>
|
||||
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 <romain@orebokech.com> # kernel panic
|
||||
Reported-by: Chris Holland <bandidoirlandes@gmail.com> # disk detection trouble
|
||||
Signed-off-by: Matthew Garrett <mjg@redhat.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Tested-by: Hatem Masmoudi <hatem.masmoudi@gmail.com> # Dell Latitude E5520
|
||||
Tested-by: janek <jan0x6c@gmail.com> # pata_jmicron with JMB362/JMB363
|
||||
[jn: with more symptoms in log message]
|
||||
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
---
|
||||
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
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
From ce85852b90a214cf577fc1b4f49d99fd7e98784a Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Shilovsky <piastry@etersoft.ru>
|
||||
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 <piastry@etersoft.ru>
|
||||
Reviewed-by: Jeff Layton <jlayton@redhat.com>
|
||||
Reported-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
Signed-off-by: Steve French <stevef@smf-gateway.(none)>
|
||||
---
|
||||
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
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
From: =?utf8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf@tu-ilmenau.de>
|
||||
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 <stephan.baerwolf@tu-ilmenau.de>
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
---
|
||||
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
|
||||
|
|
@ -1,145 +0,0 @@
|
|||
From: =?utf8?q?Stephan=20B=C3=A4rwolf?= <stephan.baerwolf@tu-ilmenau.de>
|
||||
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 <stephan.baerwolf@tu-ilmenau.de>
|
||||
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
|
||||
---
|
||||
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
|
||||
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue