From: Luis Henriques <luis.henriques@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
kernel-team@lists.ubuntu.com
Cc: Andy Lutomirski <luto@amacapital.net>,
Andi Kleen <andi@firstfloor.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@kernel.org>,
Luis Henriques <luis.henriques@canonical.com>
Subject: [PATCH 3.16.y-ckt 121/216] x86_64, switch_to(): Load TLS descriptors before switching DS and ES
Date: Mon, 12 Jan 2015 18:28:19 +0000 [thread overview]
Message-ID: <1421087394-2712-9-git-send-email-luis.henriques@canonical.com> (raw)
In-Reply-To: <1421085933-32536-1-git-send-email-luis.henriques@canonical.com>
3.16.7-ckt4 -stable review patch. If anyone has any objections, please let me know.
------------------
From: Andy Lutomirski <luto@amacapital.net>
commit f647d7c155f069c1a068030255c300663516420e upstream.
Otherwise, if buggy user code points DS or ES into the TLS
array, they would be corrupted after a context switch.
This also significantly improves the comments and documents some
gotchas in the code.
Before this patch, the both tests below failed. With this
patch, the es test passes, although the gsbase test still fails.
----- begin es test -----
/*
* Copyright (c) 2014 Andy Lutomirski
* GPL v2
*/
static unsigned short GDT3(int idx)
{
return (idx << 3) | 3;
}
static int create_tls(int idx, unsigned int base)
{
struct user_desc desc = {
.entry_number = idx,
.base_addr = base,
.limit = 0xfffff,
.seg_32bit = 1,
.contents = 0, /* Data, grow-up */
.read_exec_only = 0,
.limit_in_pages = 1,
.seg_not_present = 0,
.useable = 0,
};
if (syscall(SYS_set_thread_area, &desc) != 0)
err(1, "set_thread_area");
return desc.entry_number;
}
int main()
{
int idx = create_tls(-1, 0);
printf("Allocated GDT index %d\n", idx);
unsigned short orig_es;
asm volatile ("mov %%es,%0" : "=rm" (orig_es));
int errors = 0;
int total = 1000;
for (int i = 0; i < total; i++) {
asm volatile ("mov %0,%%es" : : "rm" (GDT3(idx)));
usleep(100);
unsigned short es;
asm volatile ("mov %%es,%0" : "=rm" (es));
asm volatile ("mov %0,%%es" : : "rm" (orig_es));
if (es != GDT3(idx)) {
if (errors == 0)
printf("[FAIL]\tES changed from 0x%hx to 0x%hx\n",
GDT3(idx), es);
errors++;
}
}
if (errors) {
printf("[FAIL]\tES was corrupted %d/%d times\n", errors, total);
return 1;
} else {
printf("[OK]\tES was preserved\n");
return 0;
}
}
----- end es test -----
----- begin gsbase test -----
/*
* gsbase.c, a gsbase test
* Copyright (c) 2014 Andy Lutomirski
* GPL v2
*/
static unsigned char *testptr, *testptr2;
static unsigned char read_gs_testvals(void)
{
unsigned char ret;
asm volatile ("movb %%gs:%1, %0" : "=r" (ret) : "m" (*testptr));
return ret;
}
int main()
{
int errors = 0;
testptr = mmap((void *)0x200000000UL, 1, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
if (testptr == MAP_FAILED)
err(1, "mmap");
testptr2 = mmap((void *)0x300000000UL, 1, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0);
if (testptr2 == MAP_FAILED)
err(1, "mmap");
*testptr = 0;
*testptr2 = 1;
if (syscall(SYS_arch_prctl, ARCH_SET_GS,
(unsigned long)testptr2 - (unsigned long)testptr) != 0)
err(1, "ARCH_SET_GS");
usleep(100);
if (read_gs_testvals() == 1) {
printf("[OK]\tARCH_SET_GS worked\n");
} else {
printf("[FAIL]\tARCH_SET_GS failed\n");
errors++;
}
asm volatile ("mov %0,%%gs" : : "r" (0));
if (read_gs_testvals() == 0) {
printf("[OK]\tWriting 0 to gs worked\n");
} else {
printf("[FAIL]\tWriting 0 to gs failed\n");
errors++;
}
usleep(100);
if (read_gs_testvals() == 0) {
printf("[OK]\tgsbase is still zero\n");
} else {
printf("[FAIL]\tgsbase was corrupted\n");
errors++;
}
return errors == 0 ? 0 : 1;
}
----- end gsbase test -----
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/509d27c9fec78217691c3dad91cec87e1006b34a.1418075657.git.luto@amacapital.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
---
arch/x86/kernel/process_64.c | 101 +++++++++++++++++++++++++++++++------------
1 file changed, 73 insertions(+), 28 deletions(-)
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index ca5b02d405c3..166119618afb 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -286,24 +286,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
fpu = switch_fpu_prepare(prev_p, next_p, cpu);
- /*
- * Reload esp0, LDT and the page table pointer:
- */
+ /* Reload esp0 and ss1. */
load_sp0(tss, next);
- /*
- * Switch DS and ES.
- * This won't pick up thread selector changes, but I guess that is ok.
- */
- savesegment(es, prev->es);
- if (unlikely(next->es | prev->es))
- loadsegment(es, next->es);
-
- savesegment(ds, prev->ds);
- if (unlikely(next->ds | prev->ds))
- loadsegment(ds, next->ds);
-
-
/* We must save %fs and %gs before load_TLS() because
* %fs and %gs may be cleared by load_TLS().
*
@@ -312,41 +297,101 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
savesegment(fs, fsindex);
savesegment(gs, gsindex);
+ /*
+ * Load TLS before restoring any segments so that segment loads
+ * reference the correct GDT entries.
+ */
load_TLS(next, cpu);
/*
- * Leave lazy mode, flushing any hypercalls made here.
- * This must be done before restoring TLS segments so
- * the GDT and LDT are properly updated, and must be
- * done before math_state_restore, so the TS bit is up
- * to date.
+ * Leave lazy mode, flushing any hypercalls made here. This
+ * must be done after loading TLS entries in the GDT but before
+ * loading segments that might reference them, and and it must
+ * be done before math_state_restore, so the TS bit is up to
+ * date.
*/
arch_end_context_switch(next_p);
+ /* Switch DS and ES.
+ *
+ * Reading them only returns the selectors, but writing them (if
+ * nonzero) loads the full descriptor from the GDT or LDT. The
+ * LDT for next is loaded in switch_mm, and the GDT is loaded
+ * above.
+ *
+ * We therefore need to write new values to the segment
+ * registers on every context switch unless both the new and old
+ * values are zero.
+ *
+ * Note that we don't need to do anything for CS and SS, as
+ * those are saved and restored as part of pt_regs.
+ */
+ savesegment(es, prev->es);
+ if (unlikely(next->es | prev->es))
+ loadsegment(es, next->es);
+
+ savesegment(ds, prev->ds);
+ if (unlikely(next->ds | prev->ds))
+ loadsegment(ds, next->ds);
+
/*
* Switch FS and GS.
*
- * Segment register != 0 always requires a reload. Also
- * reload when it has changed. When prev process used 64bit
- * base always reload to avoid an information leak.
+ * These are even more complicated than FS and GS: they have
+ * 64-bit bases are that controlled by arch_prctl. Those bases
+ * only differ from the values in the GDT or LDT if the selector
+ * is 0.
+ *
+ * Loading the segment register resets the hidden base part of
+ * the register to 0 or the value from the GDT / LDT. If the
+ * next base address zero, writing 0 to the segment register is
+ * much faster than using wrmsr to explicitly zero the base.
+ *
+ * The thread_struct.fs and thread_struct.gs values are 0
+ * if the fs and gs bases respectively are not overridden
+ * from the values implied by fsindex and gsindex. They
+ * are nonzero, and store the nonzero base addresses, if
+ * the bases are overridden.
+ *
+ * (fs != 0 && fsindex != 0) || (gs != 0 && gsindex != 0) should
+ * be impossible.
+ *
+ * Therefore we need to reload the segment registers if either
+ * the old or new selector is nonzero, and we need to override
+ * the base address if next thread expects it to be overridden.
+ *
+ * This code is unnecessarily slow in the case where the old and
+ * new indexes are zero and the new base is nonzero -- it will
+ * unnecessarily write 0 to the selector before writing the new
+ * base address.
+ *
+ * Note: This all depends on arch_prctl being the only way that
+ * user code can override the segment base. Once wrfsbase and
+ * wrgsbase are enabled, most of this code will need to change.
*/
if (unlikely(fsindex | next->fsindex | prev->fs)) {
loadsegment(fs, next->fsindex);
+
/*
- * Check if the user used a selector != 0; if yes
- * clear 64bit base, since overloaded base is always
- * mapped to the Null selector
+ * If user code wrote a nonzero value to FS, then it also
+ * cleared the overridden base address.
+ *
+ * XXX: if user code wrote 0 to FS and cleared the base
+ * address itself, we won't notice and we'll incorrectly
+ * restore the prior base address next time we reschdule
+ * the process.
*/
if (fsindex)
prev->fs = 0;
}
- /* when next process has a 64bit base use it */
if (next->fs)
wrmsrl(MSR_FS_BASE, next->fs);
prev->fsindex = fsindex;
if (unlikely(gsindex | next->gsindex | prev->gs)) {
load_gs_index(next->gsindex);
+
+ /* This works (and fails) the same way as fsindex above. */
if (gsindex)
prev->gs = 0;
}
--
2.1.4
next prev parent reply other threads:[~2015-01-12 19:04 UTC|newest]
Thread overview: 227+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-12 18:01 [3.16.y-ckt stable] Linux 3.16.7-ckt4 stable review Luis Henriques
2015-01-12 18:01 ` [PATCH 3.16.y-ckt 001/216] drm/i915: don't warn if backlight unexpectedly enabled Luis Henriques
2015-01-12 18:01 ` [PATCH 3.16.y-ckt 002/216] drm/i915/dp: only use training pattern 3 on platforms that support it Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 003/216] udptunnel: Add SKB_GSO_UDP_TUNNEL during gro_complete Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 004/216] s390/3215: fix hanging console issue Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 005/216] s390/3215: fix tty output containing tabs Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 006/216] btrfs: don't go readonly on existing qgroup items Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 007/216] regulator: anatop: Set default voltage selector for vddpu Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 008/216] KVM: s390: Fix size of monitor-class number field Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 009/216] [media] smiapp: Take mutex during PLL update in sensor initialisation Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 010/216] [media] smiapp-pll: Correct clock debug prints Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 011/216] Bluetooth: Fix LE connection timeout deadlock Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 012/216] [media] sound: simplify au0828 quirk table Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 013/216] [media] sound: Update au0828 quirks table Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 014/216] [media] af9005: fix kernel panic on init if compiled without IR Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 015/216] writeback: fix a subtle race condition in I_DIRTY clearing Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 016/216] usb: renesas_usbhs: gadget: fix NULL pointer dereference in ep_disable() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 017/216] KVM: s390: Fix ipte locking Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 018/216] KVM: s390: flush CPU on load control Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 019/216] UBI: Fix double free after do_sync_erase() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 020/216] UBI: Fix invalid vfree() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 021/216] Drivers: hv: util: make struct hv_do_fcopy match Hyper-V host messages Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 022/216] Drivers: hv: vmbus: Fix a race condition when unregistering a device Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 023/216] misc: genwqe: check for error from get_user_pages_fast() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 024/216] driver core: Fix unbalanced device reference in drivers_probe Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 025/216] drbd: merge_bvec_fn: properly remap bvm->bi_bdev Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 026/216] PCI: Restore detection of read-only BARs Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 027/216] scsi: correct return values for .eh_abort_handler implementations Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 028/216] drm/radeon: fix typo in CI dpm disable Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 029/216] ARM: tegra: Re-add removed SoC id macro to tegra_resume() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 030/216] arm64: Add COMPAT_HWCAP_LPAE Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 031/216] USB: qcserial: Add support for HP lt4112 LTE/HSPA+ Gobi 4G Modem Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 032/216] HID: usbhid: enable always-poll quirk for Elan Touchscreen 0103 Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 033/216] HID: yet another buggy ELAN touchscreen Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 034/216] dcache: fix kmemcheck warning in switch_names Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 035/216] genhd: check for int overflow in disk_expand_part_tbl() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 036/216] ftrace/x86: Add frames pointers to trampoline as necessary Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 037/216] drm/ttm: Avoid memory allocation from shrinker functions Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 038/216] ASoC: sigmadsp: Refuse to load firmware files with a non-supported version Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 039/216] drm/radeon: work around a hw bug in MGCG on CIK Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 040/216] usb: gadget: at91_udc: move prepare clk into process context Luis Henriques
2015-01-14 13:37 ` Ben Hutchings
2015-01-14 13:53 ` Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 041/216] Btrfs: make sure we wait on logged extents when fsycning two subvols Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 042/216] Btrfs: make sure logged extents complete in the current transaction V3 Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 043/216] Btrfs: do not move em to modified list when unpinning Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 044/216] ARM: mvebu: disable I/O coherency on non-SMP situations on Armada 370/375/38x/XP Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 045/216] megaraid_sas: corrected return of wait_event from abort frame path Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 046/216] ASoC: max98090: Fix ill-defined sidetone route Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 047/216] blk-mq: use 'nr_cpu_ids' as highest CPU ID count for hwq <-> cpu map Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 048/216] nfs41: fix nfs4_proc_layoutget error handling Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 049/216] cdc-acm: memory leak in error case Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 050/216] USB: cdc-acm: check for valid interfaces Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 051/216] [media] uvcvideo: Fix destruction order in uvc_delete() Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 052/216] HID: i2c-hid: fix race condition reading reports Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 053/216] mfd: twl4030-power: Fix regression with missing compatible flag Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 054/216] mfd: tc6393xb: Fail ohci suspend if full state restore is required Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 055/216] tty: serial: men_z135_uart: Add terminating entry for men_z135_ids Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 056/216] serial: samsung: wait for transfer completion before clock disable Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 057/216] mmc: dw_mmc: avoid write to CDTHRCTL on older versions Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 058/216] Bluetooth: ath3k: Add support of MCI 13d3:3408 bt device Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 059/216] n_tty: Fix read_buf race condition, increment read_head after pushing data Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 060/216] dm cache: only use overwrite optimisation for promotion when in writeback mode Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 061/216] dm cache: dirty flag was mistakenly being cleared when promoting via overwrite Luis Henriques
2015-01-12 18:02 ` [PATCH 3.16.y-ckt 062/216] dm bufio: fix memleak when using a dm_buffer's inline bio Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 063/216] ath9k_hw: fix hardware queue allocation Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 064/216] ath9k: fix BE/BK queue order Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 065/216] ath5k: fix hardware queue index assignment Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 066/216] iwlwifi: dvm: fix flush support for old firmware Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 067/216] iwlwifi: mvm: update values for Smart Fifo Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 068/216] iommu/vt-d: Fix an off-by-one bug in __domain_mapping() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 069/216] dm crypt: use memzero_explicit for on-stack buffer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 070/216] mnt: Implicitly add MNT_NODEV on remount when it was implicitly added by mount Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 071/216] mnt: Update unprivileged remount test Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 072/216] umount: Disallow unprivileged mount force Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 073/216] md/raid5: fetch_block must fetch all the blocks handle_stripe_dirtying wants Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 074/216] drm/i915: Only warn the first time we attempt to mmio whilst suspended Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 075/216] drm/i915: Disallow pin ioctl completely for kms drivers Luis Henriques
2015-01-13 19:33 ` Luis Henriques
2015-01-15 10:48 ` Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 076/216] drm/vmwgfx: Fix error printout on signals pending Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 077/216] drm/vmwgfx: Fix fence event code Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 078/216] hp_accel: Add support for HP ZBook 15 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 079/216] drm/radeon: check the right ring in radeon_evict_flags() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 080/216] swiotlb-xen: pass dev_addr to xen_dma_unmap_page and xen_dma_sync_single_for_cpu Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 081/216] swiotlb-xen: remove BUG_ON in xen_bus_to_phys Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 082/216] swiotlb-xen: call xen_dma_sync_single_for_device when appropriate Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 083/216] swiotlb-xen: pass dev_addr to swiotlb_tbl_unmap_single Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 084/216] [media] img-ir/hw: Always read data to clear buffer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 085/216] [media] img-ir/hw: Fix potential deadlock stopping timer Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 086/216] powerpc/book3s: Fix partial invalidation of TLBs in MCE code Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 087/216] clocksource: arm_arch_timer: Change clocksource name if CP15 unavailable Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 088/216] clocksource: arch_timer: Fix code to use physical timers when requested Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 089/216] ALSA: hda - Fix built-in mic at resume on Lenovo Ideapad S210 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 090/216] groups: Consolidate the setgroups permission checks Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 091/216] userns: Document what the invariant required for safe unprivileged mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 092/216] can: peak_usb: fix memset() usage Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 093/216] can: peak_usb: fix cleanup sequence order in case of error during init Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 094/216] ALSA: usb-audio: Don't resubmit pending URBs at MIDI error recovery Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 095/216] KEYS: Fix stale key registration at error path Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 096/216] thermal: Fix error path in thermal_init() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 097/216] i2c: designware: Fix falling time bindings doc Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 098/216] drm/dp: retry AUX transactions 32 times (v1.1) Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 099/216] drm/fb_helper: move deferred fb checking into restore mode (v2) Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 100/216] xtensa: fix kmap_prot definition Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 101/216] blk-mq: Fix a use-after-free Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 102/216] blk-mq: Avoid that __bt_get_word() wraps multiple times Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 103/216] blk-mq: Fix a race between bt_clear_tag() and bt_get() Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 104/216] fs: nfsd: Fix signedness bug in compare_blob Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 105/216] nfsd4: fix xdr4 inclusion of escaped char Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 106/216] nfsd4: fix xdr4 count of server in fs_location4 Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 107/216] userns: Don't allow setgroups until a gid mapping has been setablished Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 108/216] userns: Don't allow unprivileged creation of gid mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 109/216] userns: Check euid no fsuid when establishing an unprivileged uid mapping Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 110/216] userns: Only allow the creator of the userns unprivileged mappings Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 111/216] userns: Rename id_map_mutex to userns_state_mutex Luis Henriques
2015-01-12 18:03 ` [PATCH 3.16.y-ckt 112/216] drm/i915: Don't complain about stolen conflicts on gen3 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 113/216] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 114/216] ALSA: hda - Add EAPD fixup for ASUS Z99He laptop Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 115/216] blk-mq: Fix uninitialized kobject at CPU hotplugging Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 116/216] ncpfs: return proper error from NCP_IOC_SETROOT ioctl Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 117/216] drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 118/216] rtc: omap: fix clock-source configuration Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 119/216] rtc: omap: fix missing wakealarm attribute Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 120/216] exit: pidns: alloc_pid() leaks pid_namespace if child_reaper is exiting Luis Henriques
2015-01-12 18:28 ` Luis Henriques [this message]
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 122/216] KVM: nVMX: Disable unrestricted mode if ept=0 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 123/216] KVM: x86: em_ret_far overrides cpl Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 124/216] drm/i915: save/restore GMBUS freq across suspend/resume on gen4 Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 125/216] pstore-ram: Fix hangs by using write-combine mappings Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 126/216] pstore-ram: Allow optional mapping with pgprot_noncached Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 127/216] userns: Add a knob to disable setgroups on a per user namespace basis Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 128/216] userns: Allow setting gid_maps without privilege when setgroups is disabled Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 129/216] userns: Unbreak the unprivileged remount tests Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 130/216] HID: i2c-hid: prevent buffer overflow in early IRQ Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 131/216] mac80211: fix multicast LED blinking and counter Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 132/216] cfg80211: Fix 160 MHz channels with 80+80 and 160 MHz drivers Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 133/216] cfg80211: avoid mem leak on driver hint set Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 134/216] nl80211: check matches array length before acessing it Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 135/216] cfg80211: don't WARN about two consecutive Country IE hint Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 136/216] reiserfs: destroy allocated commit workqueue Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 137/216] mtd: tests: abort torturetest on erase errors Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 138/216] tracing/sched: Check preempt_count() for current when reading task->state Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 139/216] x86/tls: Validate TLS entries to protect espfix Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 140/216] x86/tls: Disallow unusual TLS segments Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 141/216] ARC: [nsimosci] move peripherals to match model to FPGA Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 142/216] isofs: Fix infinite looping over CE entries Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 143/216] mac80211: free management frame keys when removing station Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 144/216] ceph: do_sync is never initialized Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 145/216] mnt: Fix a memory stomp in umount Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 146/216] ocfs2: fix journal commit deadlock Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 147/216] md/bitmap: always wait for writes on unplug Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 148/216] mmc: block: add newline to sysfs display of force_ro Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 149/216] mmc: omap_hsmmc: Fix UHS card with DDR50 support Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 150/216] mmc: sdhci-pci-o2micro: Fix Dell E5440 issue Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 151/216] dm space map metadata: fix sm_bootstrap_get_nr_blocks() Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 152/216] dm thin: fix a race in thin_dtr Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 153/216] ARM: mvebu: fix ordering in Armada 370 .dtsi Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 154/216] eCryptfs: Force RO mount when encrypted view is enabled Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 155/216] eCryptfs: Remove buggy and unnecessary write in file name decode routine Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 156/216] tcm_loop: Fix wrong I_T nexus association Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 157/216] clk: samsung: Fix double add of syscore ops after driver rebind Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 158/216] Revert "[SCSI] mpt2sas: Remove phys on topology change." Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 159/216] Revert "[SCSI] mpt3sas: Remove phys on topology change" Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 160/216] ASoC: pcm512x: Trigger auto-increment of register addresses on i2c Luis Henriques
2015-01-12 18:28 ` [PATCH 3.16.y-ckt 161/216] Btrfs: fix fs corruption on transaction abort if device supports discard Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 162/216] perf/x86/intel/uncore: Make sure only uncore events are collected Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 163/216] perf: Fix events installation during moving group Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 164/216] drm/i915: vlv: fix IRQ masking when uninstalling interrupts Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 165/216] iscsi,iser-target: Initiate termination only once Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 166/216] iser-target: Fix flush + disconnect completion handling Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 167/216] iser-target: Parallelize CM connection establishment Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 168/216] iser-target: Fix connected_handler + teardown flow race Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 169/216] iser-target: Handle ADDR_CHANGE event for listener cm_id Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 170/216] iser-target: Fix implicit termination of connections Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 171/216] iser-target: Allocate PI contexts dynamically Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 172/216] iser-target: Fix NULL dereference in SW mode DIF Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 173/216] iscsi,iser-target: Expose supported protection ops according to t10_pi Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 174/216] genirq: Prevent proc race against freeing of irq descriptors Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 175/216] powerpc/powernv: Switch off MMU before entering nap/sleep/rvwinkle mode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 176/216] scsi: blacklist RSOC for Microsoft iSCSI target devices Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 177/216] storvsc: ring buffer failures may result in I/O freeze Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 178/216] iscsi-target: Fail connection on short sendmsg writes Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 179/216] drm/i915: Invalidate media caches on gen7 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 180/216] drm/i915: Force the CS stall for invalidate flushes Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 181/216] ALSA: hda/realtek - Add new Dell desktop for ALC3234 headset mode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 182/216] dm thin: fix inability to discard blocks when in out-of-data-space mode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 183/216] dm thin: fix missing out-of-data-space to write mode transition if blocks are released Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 184/216] dm: fix missed error code if .end_io isn't implemented by target_type Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 185/216] i2c: mv64xxx: use BIT() macro for register value definitions Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 186/216] i2c: mv64xxx: rework offload support to fix several problems Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 187/216] x86/tls: Don't validate lm in set_thread_area() after all Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 188/216] ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 189/216] tick/powerclamp: Remove tick_nohz_idle abuse Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 190/216] audit: don't attempt to lookup PIDs when changing PID filtering audit rules Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 191/216] audit: use supplied gfp_mask from audit_buffer in kauditd_send_multicast_skb Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 192/216] arm64: kernel: add missing __init section marker to cpu_suspend_init Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 193/216] arm64: kernel: refactor the CPU suspend API for retention states Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 194/216] arm64: Move cpu_resume into the text section Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 195/216] arm64: kernel: fix __cpu_suspend mm switch on warm-boot Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 196/216] audit: restore AUDIT_LOGINUID unset ABI Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 197/216] parisc: fix out-of-register compiler error in ldcw inline assembler function Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 198/216] kvm: x86: drop severity of "generation wraparound" message Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 199/216] Btrfs: fix loop writing of async reclaim Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 200/216] powercap / RAPL: add support for CPU model 0x3f Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 201/216] iwlwifi: make U-APSD default configurable at compile time Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 202/216] isofs: Fix unchecked printing of ER records Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 203/216] crypto: af_alg - fix backlog handling Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 204/216] udf: Check path length when reading symlink Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 205/216] udf: Verify i_size when loading inode Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 206/216] udf: Verify symlink size before loading it Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 207/216] udf: Check component length before reading it Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 208/216] platform/chrome: chromeos_laptop - Add support for Acer C720 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 209/216] platform/chrome: chromeos_laptop - Add HP Chromebook 14 Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 210/216] platform/chrome: chromeos_laptop - Add Dell Chromebook 11 touch Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 211/216] platform/chrome: chromeos_laptop - Add Toshiba CB35 Touch Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 212/216] platform/chrome: Add support for the acer c720p touchscreen Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 213/216] batman-adv: Calculate extra tail size based on queued fragments Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 214/216] move d_rcu from overlapping d_child to overlapping d_alias Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 215/216] deal with deadlock in d_walk() Luis Henriques
2015-01-12 18:29 ` [PATCH 3.16.y-ckt 216/216] KEYS: close race between key lookup and freeing Luis Henriques
2015-01-12 20:30 ` [3.16.y-ckt stable] Linux 3.16.7-ckt4 stable review Thomas Voegtle
2015-01-12 21:59 ` Luis Henriques
2015-01-12 23:35 ` Thomas Voegtle
2015-01-13 9:25 ` Luis Henriques
2015-01-13 18:56 ` Thomas Voegtle
2015-01-13 19:21 ` Luis Henriques
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1421087394-2712-9-git-send-email-luis.henriques@canonical.com \
--to=luis.henriques@canonical.com \
--cc=andi@firstfloor.org \
--cc=kernel-team@lists.ubuntu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=stable@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®