UBUNTU: Start new release

Ignore: yes
x86_64, traps: Stop using IST for #SS

On a 32-bit kernel, this has no effect, since there are no IST stacks.

On a 64-bit kernel, #SS can only happen in user code, on a failed iret
to user space, a canonical violation on access via RSP or RBP, or a
genuine stack segment violation in 32-bit kernel code.  The first two
cases don't need IST, and the latter two cases are unlikely fatal bugs,
and promoting them to double faults would be fine.

This fixes a bug in which the espfix64 code mishandles a stack segment
violation.

This saves 4k of memory per CPU and a tiny bit of code.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(backported from commit 6f442be2fb22be02cafa606f1769fa1e6f894441)
CVE-2014-9090
BugLink: http://bugs.launchpad.net/bugs/1398795
Acked-by: John Johansen <john.johansen@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
x86_64, traps: Fix the espfix64 #DF fixup and rewrite it in C

commit af726f21ed8af2cdaa4e93098dc211521218ae65 upstream.

There's nothing special enough about the espfix64 double fault fixup to
justify writing it in assembly.  Move it to C.

This also fixes a bug: if the double fault came from an IST stack, the
old asm code would return to a partially uninitialized stack frame.

Fixes: 3891a04aafd668686239349ea58f3314ea2af86b
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2:
 - Keep using the paranoiderrorentry macro to generate the asm code
 - Adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
CVE-2014-9090
BugLink: http://bugs.launchpad.net/bugs/1398795
Acked-by: John Johansen <john.johansen@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
x86_64, traps: Rework bad_iret

commit b645af2d5905c4e32399005b867987919cbfc3ae upstream.

It's possible for iretq to userspace to fail.  This can happen because
of a bad CS, SS, or RIP.

Historically, we've handled it by fixing up an exception from iretq to
land at bad_iret, which pretends that the failed iret frame was really
the hardware part of #GP(0) from userspace.  To make this work, there's
an extra fixup to fudge the gs base into a usable state.

This is suboptimal because it loses the original exception.  It's also
buggy because there's no guarantee that we were on the kernel stack to
begin with.  For example, if the failing iret happened on return from an
NMI, then we'll end up executing general_protection on the NMI stack.
This is bad for several reasons, the most immediate of which is that
general_protection, as a non-paranoid idtentry, will try to deliver
signals and/or schedule from the wrong stack.

This patch throws out bad_iret entirely.  As a replacement, it augments
the existing swapgs fudge into a full-blown iret fixup, mostly written
in C.  It's should be clearer and more correct.

Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
[bwh: Backported to 3.2: we didn't use the _ASM_EXTABLE macro]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
CVE-2014-9090
BugLink: http://bugs.launchpad.net/bugs/1398795
Acked-by: John Johansen <john.johansen@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit

paravirt_enabled has the following effects:

 - Disables the F00F bug workaround warning.  There is no F00F bug
   workaround any more because Linux's standard IDT handling already
   works around the F00F bug, but the warning still exists.  This
   is only cosmetic, and, in any event, there is no such thing as
   KVM on a CPU with the F00F bug.

 - Disables 32-bit APM BIOS detection.  On a KVM paravirt system,
   there should be no APM BIOS anyway.

 - Disables tboot.  I think that the tboot code should check the
   CPUID hypervisor bit directly if it matters.

 - paravirt_enabled disables espfix32.  espfix32 should *not* be
   disabled under KVM paravirt.

The last point is the purpose of this patch.  It fixes a leak of the
high 16 bits of the kernel stack address on 32-bit KVM paravirt
guests.

While I'm at it, this removes pv_info setup from kvmclock.  That
code seems to serve no purpose.

Cc: stable@vger.kernel.org
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
CVE-2014-8134
BugLink: http://bugs.launchpad.net/bugs/1400314
Acked-by: John Johansen <john.johansen@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
UBUNTU: Ubuntu-3.2.0-74.109

Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
UBUNTU: [Config] add the lowlatency flavours

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: SAUCE: Made kernel irq-threaded by default

Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Look for releases marked Lowlatency instead of Ubuntu

The printchanges target needs to look for Lowlatency instead of Ubuntu
when searching for changes to print since the last release.

Signed-off-by: Luke Yelavich <themuso@ubuntu.com>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: hooks -- should use :: to maintain unordered hooks

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: [Config] update Vcs-git: to point to current home

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: [Config] add update-from-master script

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: [Config] fix ABI copy in update script

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Start new release

Ignore: yes
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: rebase to Ubuntu-3.2.0-33.52

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Bump ABI

Ignore: yes
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Lowlatency-3.2.0-33.32

Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: [Config] enable lowlatency-pae on i386

BugLink: http://bugs.launchpad.net/bugs/1079594
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Start new release

Ignore: yes
Signed-off-by: Andy Whitcroft <apw@canonical.com>
UBUNTU: Lowlatency-3.2.0-33.33

Signed-off-by: Andy Whitcroft <apw@canonical.com>