From: Greg KH <gregkh@suse.de>
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 <mtosatti@redhat.com>,
Avi Kivity <avi@redhat.com>, Gleb Natapov <gleb@redhat.com>,
Stefan Bader <stefan.bader@canonical.com>
Subject: [053/197] KVM: x86 emulator: fix memory access during x86 emulation
Date: Thu, 22 Apr 2010 12:08:24 -0700 [thread overview]
Message-ID: <20100422190912.112550108@kvm.kroah.org> (raw)
In-Reply-To: <20100422191857.GA13268@kroah.com>
2.6.32-stable review patch. If anyone has any objections, please let us know.
------------------
From: Gleb Natapov <gleb@redhat.com>
commit 1871c6020d7308afb99127bba51f04548e7ca84e upstream
Currently when x86 emulator needs to access memory, page walk is done with
broadest permission possible, so if emulated instruction was executed
by userspace process it can still access kernel memory. Fix that by
providing correct memory access to page walker during emulation.
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
arch/x86/include/asm/kvm_emulate.h | 14 +++
arch/x86/include/asm/kvm_host.h | 7 +
arch/x86/kvm/emulate.c | 6 -
arch/x86/kvm/mmu.c | 17 +---
arch/x86/kvm/mmu.h | 6 +
arch/x86/kvm/paging_tmpl.h | 11 ++-
arch/x86/kvm/x86.c | 131 ++++++++++++++++++++++++++++---------
7 files changed, 142 insertions(+), 50 deletions(-)
--- a/arch/x86/include/asm/kvm_emulate.h
+++ b/arch/x86/include/asm/kvm_emulate.h
@@ -54,13 +54,23 @@ struct x86_emulate_ctxt;
struct x86_emulate_ops {
/*
* read_std: Read bytes of standard (non-emulated/special) memory.
- * Used for instruction fetch, stack operations, and others.
+ * Used for descriptor reading.
* @addr: [IN ] Linear address from which to read.
* @val: [OUT] Value read from memory, zero-extended to 'u_long'.
* @bytes: [IN ] Number of bytes to read from memory.
*/
int (*read_std)(unsigned long addr, void *val,
- unsigned int bytes, struct kvm_vcpu *vcpu);
+ unsigned int bytes, struct kvm_vcpu *vcpu, u32 *error);
+
+ /*
+ * fetch: Read bytes of standard (non-emulated/special) memory.
+ * Used for instruction fetch.
+ * @addr: [IN ] Linear address from which to read.
+ * @val: [OUT] Value read from memory, zero-extended to 'u_long'.
+ * @bytes: [IN ] Number of bytes to read from memory.
+ */
+ int (*fetch)(unsigned long addr, void *val,
+ unsigned int bytes, struct kvm_vcpu *vcpu, u32 *error);
/*
* read_emulated: Read bytes from emulated/special memory area.
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -256,7 +256,8 @@ struct kvm_mmu {
void (*new_cr3)(struct kvm_vcpu *vcpu);
int (*page_fault)(struct kvm_vcpu *vcpu, gva_t gva, u32 err);
void (*free)(struct kvm_vcpu *vcpu);
- gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva);
+ gpa_t (*gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t gva, u32 access,
+ u32 *error);
void (*prefetch_page)(struct kvm_vcpu *vcpu,
struct kvm_mmu_page *page);
int (*sync_page)(struct kvm_vcpu *vcpu,
@@ -645,6 +646,10 @@ void __kvm_mmu_free_some_pages(struct kv
int kvm_mmu_load(struct kvm_vcpu *vcpu);
void kvm_mmu_unload(struct kvm_vcpu *vcpu);
void kvm_mmu_sync_roots(struct kvm_vcpu *vcpu);
+gpa_t kvm_mmu_gva_to_gpa_read(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
+gpa_t kvm_mmu_gva_to_gpa_fetch(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
+gpa_t kvm_mmu_gva_to_gpa_write(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
+gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, u32 *error);
int kvm_emulate_hypercall(struct kvm_vcpu *vcpu);
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -612,7 +612,7 @@ static int do_fetch_insn_byte(struct x86
if (linear < fc->start || linear >= fc->end) {
size = min(15UL, PAGE_SIZE - offset_in_page(linear));
- rc = ops->read_std(linear, fc->data, size, ctxt->vcpu);
+ rc = ops->fetch(linear, fc->data, size, ctxt->vcpu, NULL);
if (rc)
return rc;
fc->start = linear;
@@ -667,11 +667,11 @@ static int read_descriptor(struct x86_em
op_bytes = 3;
*address = 0;
rc = ops->read_std((unsigned long)ptr, (unsigned long *)size, 2,
- ctxt->vcpu);
+ ctxt->vcpu, NULL);
if (rc)
return rc;
rc = ops->read_std((unsigned long)ptr + 2, address, op_bytes,
- ctxt->vcpu);
+ ctxt->vcpu, NULL);
return rc;
}
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -136,12 +136,6 @@ module_param(oos_shadow, bool, 0644);
#define PT64_PERM_MASK (PT_PRESENT_MASK | PT_WRITABLE_MASK | PT_USER_MASK \
| PT64_NX_MASK)
-#define PFERR_PRESENT_MASK (1U << 0)
-#define PFERR_WRITE_MASK (1U << 1)
-#define PFERR_USER_MASK (1U << 2)
-#define PFERR_RSVD_MASK (1U << 3)
-#define PFERR_FETCH_MASK (1U << 4)
-
#define PT_PDPE_LEVEL 3
#define PT_DIRECTORY_LEVEL 2
#define PT_PAGE_TABLE_LEVEL 1
@@ -1639,7 +1633,7 @@ struct page *gva_to_page(struct kvm_vcpu
{
struct page *page;
- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
+ gpa_t gpa = kvm_mmu_gva_to_gpa_read(vcpu, gva, NULL);
if (gpa == UNMAPPED_GVA)
return NULL;
@@ -2162,8 +2156,11 @@ void kvm_mmu_sync_roots(struct kvm_vcpu
spin_unlock(&vcpu->kvm->mmu_lock);
}
-static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr)
+static gpa_t nonpaging_gva_to_gpa(struct kvm_vcpu *vcpu, gva_t vaddr,
+ u32 access, u32 *error)
{
+ if (error)
+ *error = 0;
return vaddr;
}
@@ -2747,7 +2744,7 @@ int kvm_mmu_unprotect_page_virt(struct k
if (tdp_enabled)
return 0;
- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, gva);
+ gpa = kvm_mmu_gva_to_gpa_read(vcpu, gva, NULL);
spin_lock(&vcpu->kvm->mmu_lock);
r = kvm_mmu_unprotect_page(vcpu->kvm, gpa >> PAGE_SHIFT);
@@ -3245,7 +3242,7 @@ static void audit_mappings_page(struct k
if (is_shadow_present_pte(ent) && !is_last_spte(ent, level))
audit_mappings_page(vcpu, ent, va, level - 1);
else {
- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, va);
+ gpa_t gpa = kvm_mmu_gva_to_gpa_read(vcpu, va, NULL);
gfn_t gfn = gpa >> PAGE_SHIFT;
pfn_t pfn = gfn_to_pfn(vcpu->kvm, gfn);
hpa_t hpa = (hpa_t)pfn << PAGE_SHIFT;
--- a/arch/x86/kvm/mmu.h
+++ b/arch/x86/kvm/mmu.h
@@ -37,6 +37,12 @@
#define PT32_ROOT_LEVEL 2
#define PT32E_ROOT_LEVEL 3
+#define PFERR_PRESENT_MASK (1U << 0)
+#define PFERR_WRITE_MASK (1U << 1)
+#define PFERR_USER_MASK (1U << 2)
+#define PFERR_RSVD_MASK (1U << 3)
+#define PFERR_FETCH_MASK (1U << 4)
+
int kvm_mmu_get_spte_hierarchy(struct kvm_vcpu *vcpu, u64 addr, u64 sptes[4]);
static inline void kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -491,18 +491,23 @@ static void FNAME(invlpg)(struct kvm_vcp
spin_unlock(&vcpu->kvm->mmu_lock);
}
-static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr)
+static gpa_t FNAME(gva_to_gpa)(struct kvm_vcpu *vcpu, gva_t vaddr, u32 access,
+ u32 *error)
{
struct guest_walker walker;
gpa_t gpa = UNMAPPED_GVA;
int r;
- r = FNAME(walk_addr)(&walker, vcpu, vaddr, 0, 0, 0);
+ r = FNAME(walk_addr)(&walker, vcpu, vaddr,
+ !!(access & PFERR_WRITE_MASK),
+ !!(access & PFERR_USER_MASK),
+ !!(access & PFERR_FETCH_MASK));
if (r) {
gpa = gfn_to_gpa(walker.gfn);
gpa |= vaddr & ~PAGE_MASK;
- }
+ } else if (error)
+ *error = walker.error_code;
return gpa;
}
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -2505,14 +2505,41 @@ static int vcpu_mmio_read(struct kvm_vcp
return kvm_io_bus_read(&vcpu->kvm->mmio_bus, addr, len, v);
}
-static int kvm_read_guest_virt(gva_t addr, void *val, unsigned int bytes,
- struct kvm_vcpu *vcpu)
+gpa_t kvm_mmu_gva_to_gpa_read(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
+{
+ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
+ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
+}
+
+ gpa_t kvm_mmu_gva_to_gpa_fetch(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
+{
+ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
+ access |= PFERR_FETCH_MASK;
+ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
+}
+
+gpa_t kvm_mmu_gva_to_gpa_write(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
+{
+ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
+ access |= PFERR_WRITE_MASK;
+ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, access, error);
+}
+
+/* uses this to access any guest's mapped memory without checking CPL */
+gpa_t kvm_mmu_gva_to_gpa_system(struct kvm_vcpu *vcpu, gva_t gva, u32 *error)
+{
+ return vcpu->arch.mmu.gva_to_gpa(vcpu, gva, 0, error);
+}
+
+static int kvm_read_guest_virt_helper(gva_t addr, void *val, unsigned int bytes,
+ struct kvm_vcpu *vcpu, u32 access,
+ u32 *error)
{
void *data = val;
int r = X86EMUL_CONTINUE;
while (bytes) {
- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+ gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr, access, error);
unsigned offset = addr & (PAGE_SIZE-1);
unsigned toread = min(bytes, (unsigned)PAGE_SIZE - offset);
int ret;
@@ -2535,14 +2562,37 @@ out:
return r;
}
+/* used for instruction fetching */
+static int kvm_fetch_guest_virt(gva_t addr, void *val, unsigned int bytes,
+ struct kvm_vcpu *vcpu, u32 *error)
+{
+ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
+ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu,
+ access | PFERR_FETCH_MASK, error);
+}
+
+static int kvm_read_guest_virt(gva_t addr, void *val, unsigned int bytes,
+ struct kvm_vcpu *vcpu, u32 *error)
+{
+ u32 access = (kvm_x86_ops->get_cpl(vcpu) == 3) ? PFERR_USER_MASK : 0;
+ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu, access,
+ error);
+}
+
+static int kvm_read_guest_virt_system(gva_t addr, void *val, unsigned int bytes,
+ struct kvm_vcpu *vcpu, u32 *error)
+{
+ return kvm_read_guest_virt_helper(addr, val, bytes, vcpu, 0, error);
+}
+
static int kvm_write_guest_virt(gva_t addr, void *val, unsigned int bytes,
- struct kvm_vcpu *vcpu)
+ struct kvm_vcpu *vcpu, u32 *error)
{
void *data = val;
int r = X86EMUL_CONTINUE;
while (bytes) {
- gpa_t gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+ gpa_t gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, error);
unsigned offset = addr & (PAGE_SIZE-1);
unsigned towrite = min(bytes, (unsigned)PAGE_SIZE - offset);
int ret;
@@ -2572,6 +2622,7 @@ static int emulator_read_emulated(unsign
struct kvm_vcpu *vcpu)
{
gpa_t gpa;
+ u32 error_code;
if (vcpu->mmio_read_completed) {
memcpy(val, vcpu->mmio_data, bytes);
@@ -2581,17 +2632,20 @@ static int emulator_read_emulated(unsign
return X86EMUL_CONTINUE;
}
- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+ gpa = kvm_mmu_gva_to_gpa_read(vcpu, addr, &error_code);
+
+ if (gpa == UNMAPPED_GVA) {
+ kvm_inject_page_fault(vcpu, addr, error_code);
+ return X86EMUL_PROPAGATE_FAULT;
+ }
/* For APIC access vmexit */
if ((gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
goto mmio;
- if (kvm_read_guest_virt(addr, val, bytes, vcpu)
+ if (kvm_read_guest_virt(addr, val, bytes, vcpu, NULL)
== X86EMUL_CONTINUE)
return X86EMUL_CONTINUE;
- if (gpa == UNMAPPED_GVA)
- return X86EMUL_PROPAGATE_FAULT;
mmio:
/*
@@ -2630,11 +2684,12 @@ static int emulator_write_emulated_onepa
struct kvm_vcpu *vcpu)
{
gpa_t gpa;
+ u32 error_code;
- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+ gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, &error_code);
if (gpa == UNMAPPED_GVA) {
- kvm_inject_page_fault(vcpu, addr, 2);
+ kvm_inject_page_fault(vcpu, addr, error_code);
return X86EMUL_PROPAGATE_FAULT;
}
@@ -2698,7 +2753,7 @@ static int emulator_cmpxchg_emulated(uns
char *kaddr;
u64 val;
- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, addr);
+ gpa = kvm_mmu_gva_to_gpa_write(vcpu, addr, NULL);
if (gpa == UNMAPPED_GVA ||
(gpa & PAGE_MASK) == APIC_DEFAULT_PHYS_BASE)
@@ -2777,7 +2832,7 @@ void kvm_report_emulation_failure(struct
rip_linear = rip + get_segment_base(vcpu, VCPU_SREG_CS);
- kvm_read_guest_virt(rip_linear, (void *)opcodes, 4, vcpu);
+ kvm_read_guest_virt(rip_linear, (void *)opcodes, 4, vcpu, NULL);
printk(KERN_ERR "emulation failed (%s) rip %lx %02x %02x %02x %02x\n",
context, rip, opcodes[0], opcodes[1], opcodes[2], opcodes[3]);
@@ -2785,7 +2840,8 @@ void kvm_report_emulation_failure(struct
EXPORT_SYMBOL_GPL(kvm_report_emulation_failure);
static struct x86_emulate_ops emulate_ops = {
- .read_std = kvm_read_guest_virt,
+ .read_std = kvm_read_guest_virt_system,
+ .fetch = kvm_fetch_guest_virt,
.read_emulated = emulator_read_emulated,
.write_emulated = emulator_write_emulated,
.cmpxchg_emulated = emulator_cmpxchg_emulated,
@@ -2922,12 +2978,17 @@ static int pio_copy_data(struct kvm_vcpu
gva_t q = vcpu->arch.pio.guest_gva;
unsigned bytes;
int ret;
+ u32 error_code;
bytes = vcpu->arch.pio.size * vcpu->arch.pio.cur_count;
if (vcpu->arch.pio.in)
- ret = kvm_write_guest_virt(q, p, bytes, vcpu);
+ ret = kvm_write_guest_virt(q, p, bytes, vcpu, &error_code);
else
- ret = kvm_read_guest_virt(q, p, bytes, vcpu);
+ ret = kvm_read_guest_virt(q, p, bytes, vcpu, &error_code);
+
+ if (ret == X86EMUL_PROPAGATE_FAULT)
+ kvm_inject_page_fault(vcpu, q, error_code);
+
return ret;
}
@@ -2948,7 +3009,7 @@ int complete_pio(struct kvm_vcpu *vcpu)
if (io->in) {
r = pio_copy_data(vcpu);
if (r)
- return r;
+ goto out;
}
delta = 1;
@@ -2975,7 +3036,7 @@ int complete_pio(struct kvm_vcpu *vcpu)
kvm_register_write(vcpu, VCPU_REGS_RSI, val);
}
}
-
+out:
io->count -= io->cur_count;
io->cur_count = 0;
@@ -3095,10 +3156,8 @@ int kvm_emulate_pio_string(struct kvm_vc
if (!vcpu->arch.pio.in) {
/* string PIO write */
ret = pio_copy_data(vcpu);
- if (ret == X86EMUL_PROPAGATE_FAULT) {
- kvm_inject_gp(vcpu, 0);
+ if (ret == X86EMUL_PROPAGATE_FAULT)
return 1;
- }
if (ret == 0 && !pio_string_write(vcpu)) {
complete_pio(vcpu);
if (vcpu->arch.pio.count == 0)
@@ -4078,7 +4137,9 @@ static int load_guest_segment_descriptor
kvm_queue_exception_e(vcpu, GP_VECTOR, selector & 0xfffc);
return 1;
}
- return kvm_read_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
+ return kvm_read_guest_virt_system(dtable.base + index*8,
+ seg_desc, sizeof(*seg_desc),
+ vcpu, NULL);
}
/* allowed just for 8 bytes segments */
@@ -4092,15 +4153,23 @@ static int save_guest_segment_descriptor
if (dtable.limit < index * 8 + 7)
return 1;
- return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu);
+ return kvm_write_guest_virt(dtable.base + index*8, seg_desc, sizeof(*seg_desc), vcpu, NULL);
+}
+
+static gpa_t get_tss_base_addr_write(struct kvm_vcpu *vcpu,
+ struct desc_struct *seg_desc)
+{
+ u32 base_addr = get_desc_base(seg_desc);
+
+ return kvm_mmu_gva_to_gpa_write(vcpu, base_addr, NULL);
}
-static gpa_t get_tss_base_addr(struct kvm_vcpu *vcpu,
+static gpa_t get_tss_base_addr_read(struct kvm_vcpu *vcpu,
struct desc_struct *seg_desc)
{
u32 base_addr = get_desc_base(seg_desc);
- return vcpu->arch.mmu.gva_to_gpa(vcpu, base_addr);
+ return kvm_mmu_gva_to_gpa_read(vcpu, base_addr, NULL);
}
static u16 get_segment_selector(struct kvm_vcpu *vcpu, int seg)
@@ -4303,7 +4372,7 @@ static int kvm_task_switch_16(struct kvm
sizeof tss_segment_16))
goto out;
- if (kvm_read_guest(vcpu->kvm, get_tss_base_addr(vcpu, nseg_desc),
+ if (kvm_read_guest(vcpu->kvm, get_tss_base_addr_read(vcpu, nseg_desc),
&tss_segment_16, sizeof tss_segment_16))
goto out;
@@ -4311,7 +4380,7 @@ static int kvm_task_switch_16(struct kvm
tss_segment_16.prev_task_link = old_tss_sel;
if (kvm_write_guest(vcpu->kvm,
- get_tss_base_addr(vcpu, nseg_desc),
+ get_tss_base_addr_write(vcpu, nseg_desc),
&tss_segment_16.prev_task_link,
sizeof tss_segment_16.prev_task_link))
goto out;
@@ -4342,7 +4411,7 @@ static int kvm_task_switch_32(struct kvm
sizeof tss_segment_32))
goto out;
- if (kvm_read_guest(vcpu->kvm, get_tss_base_addr(vcpu, nseg_desc),
+ if (kvm_read_guest(vcpu->kvm, get_tss_base_addr_read(vcpu, nseg_desc),
&tss_segment_32, sizeof tss_segment_32))
goto out;
@@ -4350,7 +4419,7 @@ static int kvm_task_switch_32(struct kvm
tss_segment_32.prev_task_link = old_tss_sel;
if (kvm_write_guest(vcpu->kvm,
- get_tss_base_addr(vcpu, nseg_desc),
+ get_tss_base_addr_write(vcpu, nseg_desc),
&tss_segment_32.prev_task_link,
sizeof tss_segment_32.prev_task_link))
goto out;
@@ -4373,7 +4442,7 @@ int kvm_task_switch(struct kvm_vcpu *vcp
u32 old_tss_base = get_segment_base(vcpu, VCPU_SREG_TR);
u16 old_tss_sel = get_segment_selector(vcpu, VCPU_SREG_TR);
- old_tss_base = vcpu->arch.mmu.gva_to_gpa(vcpu, old_tss_base);
+ old_tss_base = kvm_mmu_gva_to_gpa_write(vcpu, old_tss_base, NULL);
/* FIXME: Handle errors. Failure to read either TSS or their
* descriptors should generate a pagefault.
@@ -4582,7 +4651,7 @@ int kvm_arch_vcpu_ioctl_translate(struct
vcpu_load(vcpu);
down_read(&vcpu->kvm->slots_lock);
- gpa = vcpu->arch.mmu.gva_to_gpa(vcpu, vaddr);
+ gpa = kvm_mmu_gva_to_gpa_system(vcpu, vaddr, NULL);
up_read(&vcpu->kvm->slots_lock);
tr->physical_address = gpa;
tr->valid = gpa != UNMAPPED_GVA;
next prev parent reply other threads:[~2010-04-22 20:38 UTC|newest]
Thread overview: 238+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-22 19:18 [000/197] 2.6.32.12-stable review Greg KH
2010-04-22 19:07 ` [001/197] drm/edid: allow certain bogus edids to hit a fixup path rather than fail Greg KH
2010-04-22 19:07 ` [002/197] drm/radeon: add new RS880 pci id Greg KH
2010-04-22 19:07 ` [003/197] drm: remove the EDID blob stored in the EDID property when it is disconnected Greg KH
2010-04-22 19:07 ` [004/197] fat: fix buffer overflow in vfat_create_shortname() Greg KH
2010-04-22 19:07 ` [005/197] oom: fix the unsafe usage of badness() in proc_oom_score() Greg KH
2010-04-22 19:07 ` [006/197] drm/radeon/kms: dont print error on -ERESTARTSYS Greg KH
2010-04-22 19:07 ` [007/197] drm/radeon/kms: fix pal tv-out support on legacy IGP chips Greg KH
2010-04-22 19:07 ` [008/197] drm: Return ENODEV if the inode mapping changes Greg KH
2010-04-22 19:07 ` [009/197] xfs: simplify inode teardown Greg KH
2010-04-22 19:07 ` [010/197] xfs: fix mmap_sem/iolock inversion in xfs_free_eofblocks Greg KH
2010-04-22 19:07 ` [011/197] xfs: I/O completion handlers must use NOFS allocations Greg KH
2010-04-22 19:07 ` [012/197] xfs: Wrapped journal record corruption on read at recovery Greg KH
2010-04-22 19:07 ` [013/197] xfs: Fix error return for fallocate() on XFS Greg KH
2010-04-22 19:07 ` [014/197] xfs: check for not fully initialized inodes in xfs_ireclaim Greg KH
2010-04-22 19:07 ` [015/197] xfs: fix timestamp handling in xfs_setattr Greg KH
2010-04-22 19:07 ` [016/197] xfs: Dont flush stale inodes Greg KH
2010-04-22 19:07 ` [017/197] xfs: Ensure we force all busy extents in range to disk Greg KH
2010-04-22 19:07 ` [018/197] xfs: reclaim inodes under a write lock Greg KH
2010-04-22 19:07 ` [019/197] xfs: Avoid inodes in reclaim when flushing from inode cache Greg KH
2010-04-22 19:07 ` [020/197] xfs: reclaim all inodes by background tree walks Greg KH
2010-04-22 19:07 ` [021/197] xfs: fix stale inode flush avoidance Greg KH
2010-04-22 19:07 ` [022/197] xfs: xfs_swap_extents needs to handle dynamic fork offsets Greg KH
2010-04-22 19:07 ` [023/197] xfs: quota limit statvfs available blocks Greg KH
2010-04-22 19:07 ` [024/197] xfs: dont hold onto reserved blocks on remount, ro Greg KH
2010-04-22 19:07 ` [025/197] xfs: remove invalid barrier optimization from xfs_fsync Greg KH
2010-04-22 19:07 ` [026/197] xfs: Non-blocking inode locking in IO completion Greg KH
2010-04-22 19:07 ` [027/197] xfs: fix locking for inode cache radix tree tag updates Greg KH
2010-04-22 19:07 ` [028/197] sh: Enable the mmu in start_secondary() Greg KH
2010-04-22 19:08 ` [029/197] sh: Fix FDPIC binary loader Greg KH
2010-04-22 19:08 ` [030/197] [SCSI] libiscsi: Fix recovery slowdown regression Greg KH
2010-04-22 19:08 ` [031/197] Freezer: Fix buggy resume test for tasks frozen with cgroup freezer Greg KH
2010-04-22 19:08 ` [032/197] iwlwifi: counting number of tfds can be free for 4965 Greg KH
2010-04-22 19:08 ` [033/197] iwlwifi: fix nfreed-- Greg KH
2010-04-22 19:08 ` [034/197] iwlwifi: range checking issue Greg KH
2010-04-22 19:08 ` [035/197] setup correct int pipe type in ar9170_usb_exec_cmd Greg KH
2010-04-22 19:08 ` [036/197] mac80211: move netdev queue enabling to correct spot Greg KH
2010-04-22 19:08 ` [037/197] mac80211: tear down all agg queues when restart/reconfig hw Greg KH
2010-04-22 19:08 ` [038/197] WATCHDOG: hpwdt - fix lower timeout limit Greg KH
2010-04-22 19:08 ` [039/197] WATCHDOG: iTCO_wdt: TCO Watchdog patch for additional Intel Cougar Point DeviceIDs Greg KH
2010-04-22 19:08 ` [040/197] genirq: Force MSI irq handlers to run with interrupts disabled Greg KH
2010-04-22 19:08 ` [041/197] tty: release_one_tty() forgets to put pids Greg KH
2010-04-22 19:08 ` [042/197] lis3: fix show rate for 8 bits chips Greg KH
2010-04-22 19:08 ` [043/197] pata_ali: Fix regression with old devices Greg KH
2010-04-22 19:08 ` [044/197] HID: fix oops in gyration_event() Greg KH
2010-04-22 19:08 ` [045/197] raw: fsync method is now required Greg KH
2010-04-22 19:08 ` [046/197] readahead: fix NULL filp dereference Greg KH
2010-04-22 19:08 ` [047/197] ALSA: mixart: range checking proc file Greg KH
2010-04-22 19:08 ` [048/197] ALSA: hda: Fix 0 dB offset for Lenovo Thinkpad models using AD1981 Greg KH
2010-04-22 19:08 ` [049/197] x86, amd: Get multi-node CPU info from NodeId MSR instead of PCI config space Greg KH
2010-04-26 17:10 ` Jiri Kosina
2010-04-27 6:55 ` Andreas Herrmann
2010-04-27 7:07 ` Jiri Kosina
2010-04-22 19:08 ` [050/197] resource: move kernel function inside __KERNEL__ Greg KH
2010-04-22 19:08 ` [051/197] backlight: mbp_nvidia_bl - add five more MacBook variants Greg KH
2010-04-22 19:54 ` Evan McClain
2010-04-23 16:02 ` Greg KH
2010-04-23 16:49 ` Evan McClain
2010-04-23 17:05 ` Evan McClain
2010-04-23 17:11 ` [Stable-review] " Willy Tarreau
2010-04-23 18:04 ` Evan McClain
2010-04-23 19:11 ` [stable] " Greg KH
2010-04-22 19:08 ` [052/197] KVM: x86 emulator: Add Virtual-8086 mode of emulation Greg KH
2010-04-22 19:08 ` Greg KH [this message]
2010-04-22 19:08 ` [054/197] KVM: x86 emulator: Check IOPL level during io instruction emulation Greg KH
2010-04-22 19:08 ` [055/197] KVM: x86 emulator: Fix popf emulation Greg KH
2010-04-22 19:08 ` [056/197] KVM: Fix segment descriptor loading Greg KH
2010-04-22 19:08 ` [057/197] KVM: VMX: Update instruction length on intercepted BP Greg KH
2010-04-22 19:08 ` [058/197] KVM: VMX: Use macros instead of hex value on cr0 initialization Greg KH
2010-04-22 19:08 ` [059/197] KVM: SVM: Reset cr0 properly on vcpu reset Greg KH
2010-04-22 19:08 ` [060/197] KVM: VMX: Disable unrestricted guest when EPT disabled Greg KH
2010-04-22 19:08 ` [061/197] KVM: x86: disable paravirt mmu reporting Greg KH
2010-04-22 19:08 ` [062/197] pata_via: Add VIA VX900 support Greg KH
2010-04-22 19:08 ` [063/197] ext3: Dont update the superblock in ext3_statfs() Greg KH
2010-04-22 19:08 ` [064/197] ext3: journal all modifications in ext3_xattr_set_handle Greg KH
2010-04-22 19:08 ` [065/197] thinkpad-acpi: fix some version quirks Greg KH
2010-04-22 19:08 ` [066/197] thinkpad-acpi: issue backlight class events Greg KH
2010-04-22 19:08 ` [067/197] thinkpad-acpi: silence bogus complain during rmmod Greg KH
2010-04-22 19:08 ` [068/197] thinkpad-acpi: adopt input device Greg KH
2010-04-22 19:08 ` [069/197] thinkpad-acpi: expose module parameters Greg KH
2010-04-22 19:08 ` [070/197] thinkpad-acpi: log temperatures on termal alarm (v2) Greg KH
2010-04-22 19:08 ` [071/197] thinkpad-acpi: use input_set_capability Greg KH
2010-04-22 19:08 ` [072/197] thinkpad-acpi: sync input device EV_SW initial state Greg KH
2010-04-22 19:08 ` [073/197] thinkpad-acpi: log initial state of rfkill switches Greg KH
2010-04-22 19:08 ` [074/197] thinkpad-acpi: convert to seq_file Greg KH
2010-04-22 19:08 ` [075/197] thinkpad-acpi: lock down video output state access Greg KH
2010-04-22 19:08 ` [076/197] eeepc-laptop: disable cpu speed control on EeePC 701 Greg KH
2010-04-22 19:08 ` [077/197] eeepc-laptop: dmi blacklist to disable pci hotplug code Greg KH
2010-04-22 19:08 ` [078/197] eeepc-laptop: add hotplug_disable parameter Greg KH
2010-04-22 19:08 ` [079/197] eeepc-laptop: disable wireless hotplug for 1201N Greg KH
2010-04-22 19:08 ` [080/197] eeepc-laptop: disable wireless hotplug for 1005PE Greg KH
2010-04-22 19:08 ` [081/197] libata: disable NCQ on Crucial C300 SSD Greg KH
2010-04-22 19:08 ` [082/197] cifs: Fix a kernel BUG with remote OS/2 server (try #3) Greg KH
2010-04-22 19:08 ` [083/197] CIFS: initialize nbytes at the beginning of CIFSSMBWrite() Greg KH
2010-04-22 19:08 ` [084/197] iwlwifi: need check for valid qos packet before free Greg KH
2010-04-22 19:08 ` [085/197] ARM: 6031/1: fix Thumb-2 decompressor Greg KH
2010-04-22 19:08 ` [086/197] drm/edid/quirks: Envision EN2028 Greg KH
2010-04-22 19:08 ` [087/197] drm/radeon: R300 AD only has one quad pipe Greg KH
2010-04-22 19:08 ` [088/197] drm/radeon/kms: fix washed out image on legacy tv dac Greg KH
2010-04-22 19:09 ` [089/197] x86-32, resume: do a global tlb flush in S4 resume Greg KH
2010-04-22 19:09 ` [090/197] x86: hpet: Make WARN_ON understandable Greg KH
2010-04-22 19:09 ` [091/197] x86, hpet: Erratum workaround for read after write of HPET comparator Greg KH
2010-04-22 19:09 ` [092/197] x86: Fix double enable_IR_x2apic() call on SMP kernel on !SMP boards Greg KH
2010-04-22 19:09 ` [093/197] sched: sched_getaffinity(): Allow less than NR_CPUS length Greg KH
2010-04-22 19:09 ` [094/197] sched: Fix sched_getaffinity() Greg KH
2010-04-22 19:09 ` [095/197] NFSv4: Fall back to ordinary lookup if nfs4_atomic_open() returns EISDIR Greg KH
2010-04-22 19:09 ` [096/197] NFSv4: fix delegated locking Greg KH
2010-04-22 19:09 ` [097/197] ALSA: hda - add a quirk for Clevo M570U laptop Greg KH
2010-04-22 19:09 ` [098/197] ALSA: usb - Fix Oops after usb-midi disconnection Greg KH
2010-04-22 19:09 ` [099/197] hwmon: (sht15) Fix sht15_calc_temp interpolation function Greg KH
2010-04-22 19:09 ` [100/197] hwmon: (sht15) Properly handle the case CONFIG_REGULATOR=n Greg KH
2010-04-22 19:09 ` [101/197] drm/i915: Add no_lvds entry for the Clientron U800 Greg KH
2010-04-22 19:09 ` [102/197] drm/radeon/kms: disable the tv encoder when tv/cv is not in use Greg KH
2010-04-22 19:09 ` [103/197] drm/radeon/kms: fix tv dac conflict resolver Greg KH
2010-04-22 19:09 ` [104/197] drm/radeon/kms: fix rs600 tlb flush Greg KH
2010-04-22 19:09 ` [105/197] drm/radeon/kms: add FireMV 2400 PCI ID Greg KH
2010-04-22 19:09 ` [106/197] x86/amd-iommu: Use helper function to destroy domain Greg KH
2010-04-22 19:09 ` [107/197] x86/amd-iommu: enable iommu before attaching devices Greg KH
2010-04-22 19:09 ` [108/197] Revert "x86: disable IOMMUs on kernel crash" Greg KH
2010-04-22 19:09 ` [109/197] x86, lib: Add wbinvd smp helpers Greg KH
2010-04-22 19:09 ` [110/197] x86, cacheinfo: Fix disabling of L3 cache indices Greg KH
2010-04-22 19:09 ` [111/197] intel-agp: Switch to wbinvd_on_all_cpus Greg KH
2010-04-22 19:09 ` [112/197] x86, cacheinfo: Add cache index disable sysfs attrs only to L3 caches Greg KH
2010-04-22 19:09 ` [113/197] x86, cacheinfo: Calculate L3 indices Greg KH
2010-05-05 16:26 ` Jiri Kosina
2010-05-05 18:02 ` Borislav Petkov
2010-05-05 21:33 ` Jiri Kosina
2010-05-06 8:17 ` Borislav Petkov
2010-05-06 13:46 ` Jiri Kosina
2010-05-06 14:13 ` Borislav Petkov
2010-05-12 23:19 ` [stable] " Greg KH
2010-05-12 23:32 ` H. Peter Anvin
2010-05-12 23:42 ` H. Peter Anvin
2010-05-13 5:26 ` Jiri Kosina
2010-05-13 7:01 ` Borislav Petkov
2010-04-22 19:09 ` [114/197] x86, cacheinfo: Remove NUMA dependency, fix for AMD Fam10h rev D1 Greg KH
2010-04-22 19:09 ` [115/197] x86, cacheinfo: Enable L3 CID only on AMD Greg KH
2010-04-22 19:09 ` [116/197] vgaarb: fix "target=default" passing Greg KH
2010-04-22 19:09 ` [117/197] x86-32: clean up rwsem inline asm statements Greg KH
2010-04-22 19:09 ` [118/197] x86: clean up rwsem type system Greg KH
2010-04-22 19:09 ` [119/197] x86-64, rwsem: 64-bit xadd rwsem implementation Greg KH
2010-04-22 19:09 ` [120/197] x86-64: support native " Greg KH
2010-04-22 19:09 ` [121/197] x86: Fix breakage of UML from the changes in the rwsem system Greg KH
2010-04-22 19:09 ` [122/197] x86-64, rwsem: Avoid store forwarding hazard in __downgrade_write Greg KH
2010-04-22 19:09 ` [123/197] fix NFS4 handling of mountpoint stat Greg KH
2010-04-22 19:09 ` [124/197] dm mpath: fix stall when requeueing io Greg KH
2010-04-22 19:09 ` [125/197] quota: Fix possible dq_flags corruption Greg KH
2010-04-22 19:09 ` [126/197] Staging: comedi: fix usbdux timeout bug Greg KH
2010-04-22 19:09 ` [127/197] Staging: comedi: usbdux.c: fix locking up of the driver when the comedi ringbuffer runs empty Greg KH
2010-04-22 19:09 ` [128/197] ocfs2: set i_mode on disk during acl operations Greg KH
2010-04-22 19:09 ` [129/197] ocfs2: Change bg_chain check for ocfs2_validate_gd_parent Greg KH
2010-04-22 19:09 ` [130/197] 9p: Skip check for mandatory locks when unlocking Greg KH
2010-04-22 19:09 ` [131/197] [SCSI] fc class: fail fast bsg requests Greg KH
2010-04-22 19:09 ` [132/197] SCSI: add scsi target reset support to scsi ioctl Greg KH
2010-04-22 19:09 ` [133/197] igb: add support for 82576NS SerDes adapter Greg KH
2010-04-22 19:09 ` [134/197] PCIe AER: prevent AER injection if hardware masks error reporting Greg KH
2010-04-22 19:09 ` [135/197] vgaarb: Fix VGA arbiter to accept PCI domains other than 0 Greg KH
2010-04-22 19:09 ` [136/197] SCSI: fc-transport: Use packed modifier for fc_bsg_request structure Greg KH
2010-04-22 19:09 ` [137/197] pci: Update pci_set_vga_state() to call arch functions Greg KH
2010-04-22 19:09 ` [138/197] PCI: kill off pci_register_set_vga_state() symbol export Greg KH
2010-04-22 19:09 ` [139/197] PCI: fix nested spinlock hang in aer_inject Greg KH
2010-04-22 19:09 ` [140/197] IPoIB: Fix TX queue lockup with mixed UD/CM traffic Greg KH
2010-04-22 19:09 ` [141/197] x86/PCI: irq and pci_ids patch for Intel Cougar Point DeviceIDs Greg KH
2010-04-22 19:09 ` [142/197] ALSA: hda_intel: ALSA HD Audio " Greg KH
2010-04-22 19:09 ` [143/197] ALSA: hda - enable snoop for Intel Cougar Point Greg KH
2010-04-22 19:09 ` [144/197] ata_piix: IDE Mode SATA patch for Intel Cougar Point DeviceIDs Greg KH
2010-04-22 19:09 ` [145/197] ahci: AHCI and RAID mode " Greg KH
2010-04-22 19:09 ` [146/197] i2c-i801: Add Intel Cougar Point device IDs Greg KH
2010-04-22 19:09 ` [147/197] b43: Remove reset after fatal DMA error Greg KH
2010-04-22 19:09 ` [148/197] b43: Allow PIO mode to be selected at module load Greg KH
2010-04-22 19:10 ` [149/197] b43: fall back gracefully to PIO mode after fatal DMA errors Greg KH
2010-04-22 19:10 ` [150/197] ALSA: hda - Add position_fix quirk for Biostar mobo Greg KH
2010-04-22 19:10 ` [151/197] agp/hp: fixup hp agp after ACPI changes Greg KH
2010-04-22 19:10 ` [152/197] b43: Optimize PIO scratchbuffer usage Greg KH
2010-04-22 19:10 ` [153/197] ecryptfs: fix use with tmpfs by removing d_drop from ecryptfs_destroy_inode Greg KH
2010-04-22 19:10 ` [154/197] eCryptfs: Decrypt symlink target for stat size Greg KH
2010-04-22 19:10 ` [155/197] ecryptfs: fix error code for missing xattrs in lower fs Greg KH
2010-04-22 19:10 ` [156/197] sched: Fix a race between ttwu() and migrate_task() Greg KH
2010-04-22 19:10 ` [157/197] USB: cdc-acm: Update to new autopm API Greg KH
2010-04-22 19:10 ` [158/197] USB: cdc-acm: Fix stupid NULL pointer in resume() Greg KH
2010-04-22 19:10 ` [159/197] iwlwifi: clear all tx queues when firmware ready Greg KH
2010-04-22 19:10 ` [160/197] iwlwifi: fix scan race Greg KH
2010-04-22 19:10 ` [161/197] e1000e: stop cleaning when we reach tx_ring->next_to_use Greg KH
2010-04-22 19:10 ` [162/197] r8169: offical fix for CVE-2009-4537 (overlength frame DMAs) Greg KH
2010-04-22 19:10 ` [163/197] tcp: fix ICMP-RTO war Greg KH
2010-04-22 19:10 ` [164/197] perf_events, x86: Implement Intel Westmere/Nehalem-EX support Greg KH
2010-04-22 19:10 ` [165/197] ACPI: EC: Allow multibyte access to EC Greg KH
2010-04-22 19:59 ` Linus Torvalds
2010-04-22 20:07 ` Greg KH
2010-04-22 19:10 ` [166/197] md/raid5: allow for more than 2^31 chunks Greg KH
2010-04-23 0:33 ` [Stable-review] " Chuck Ebbert
2010-04-23 0:58 ` Linus Torvalds
2010-04-23 3:11 ` Greg KH
2010-04-23 16:06 ` Greg KH
2010-04-22 19:10 ` [167/197] ACPI: EC: Limit burst to 64 bits Greg KH
2010-04-22 19:10 ` [168/197] Input: wacom - switch mode upon system resume Greg KH
2010-04-22 19:10 ` [169/197] modules: fix incorrect percpu usage Greg KH
2010-04-28 17:46 ` Mathieu Desnoyers
2010-04-22 19:10 ` [170/197] lockdep: " Greg KH
2010-04-22 21:08 ` [Stable-review] " Nikola Ciprich
2010-04-22 22:02 ` Mathieu Desnoyers
2010-04-23 16:05 ` Greg KH
2010-04-28 17:46 ` Mathieu Desnoyers
2010-04-22 19:10 ` [171/197] module: fix __module_ref_addr() Greg KH
2010-04-28 14:52 ` Jiri Benc
2010-04-28 16:20 ` Mathieu Desnoyers
2010-04-28 16:55 ` Jiri Benc
2010-04-28 17:24 ` Tejun Heo
2010-04-28 17:29 ` Greg KH
2010-04-28 17:45 ` Mathieu Desnoyers
2010-05-12 22:14 ` [stable] " Greg KH
2010-04-22 19:10 ` [172/197] md: deal with merge_bvec_fn in component devices better Greg KH
2010-04-22 19:10 ` [173/197] nfsd4: dont try to map gids in generic rpc code Greg KH
2010-04-22 19:10 ` [174/197] Revert "sunrpc: fix peername failed on closed listener" Greg KH
2010-04-22 19:10 ` [175/197] Revert "sunrpc: move the close processing after do recvfrom method" Greg KH
2010-04-22 19:10 ` [176/197] nfsd: ensure sockets are closed on error Greg KH
2010-04-22 19:10 ` [177/197] ALSA: hda: Set Front Mic to input vref 50% for Lenovo 3000 Y410 Greg KH
2010-04-22 19:10 ` [178/197] mac80211: fix deferred hardware scan requests Greg KH
2010-04-22 19:10 ` [179/197] fs-writeback: Add helper function to start writeback if idle Greg KH
2010-04-22 19:10 ` [180/197] ext4: flush delalloc blocks when space is low Greg KH
2010-04-22 19:10 ` [181/197] ext4: fix async i/o writes beyond 4GB to a sparse file Greg KH
2010-04-22 19:10 ` [182/197] tpm: autoload tpm_tis based on system PnP IDs Greg KH
2010-04-22 19:10 ` [183/197] IB/iser: Rewrite SG handling for RDMA logic Greg KH
2010-04-22 19:10 ` [184/197] [SCSI] mptctl : Remove printk which floods unnecessary messages to var/log/message Greg KH
2010-04-22 19:10 ` [185/197] [SCSI] mptspi: Fix for incorrect data underrun errata Greg KH
2010-04-22 19:10 ` [186/197] sched: Use proper type in sched_getaffinity() Greg KH
2010-04-22 19:10 ` [187/197] KVM: SVM: Fix memory leaks that happen when svm_create_vcpu() fails Greg KH
2010-04-22 19:10 ` [188/197] KVM: Dont spam kernel log when injecting exceptions due to bad cr writes Greg KH
2010-04-22 19:10 ` [189/197] KVM: allow bit 10 to be cleared in MSR_IA32_MC4_CTL Greg KH
2010-04-22 19:10 ` [190/197] KVM: VMX: Save/restore rflags.vm correctly in real mode Greg KH
2010-04-22 19:10 ` [191/197] KVM: MMU: fix kvm_mmu_zap_page() and its calling path Greg KH
2010-04-22 19:10 ` [192/197] KVM: fix the handling of dirty bitmaps to avoid overflows Greg KH
2010-04-22 19:10 ` [193/197] KVM: Increase NR_IOBUS_DEVS limit to 200 Greg KH
2010-04-22 19:10 ` [194/197] KVM: x86: Fix TSS size check for 16-bit tasks Greg KH
2010-04-22 19:10 ` [195/197] x86/gart: Disable GART explicitly before initialization Greg KH
2010-04-22 19:10 ` [196/197] MIPS: uasm: Add OR instruction Greg KH
2010-04-22 19:10 ` [197/197] MIPS: Sibyte: Fix M3 TLB exception handler workaround Greg KH
2010-04-23 16:10 ` [stable] [000/197] 2.6.32.12-stable review Greg KH
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=20100422190912.112550108@kvm.kroah.org \
--to=gregkh@suse.de \
--cc=akpm@linux-foundation.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=avi@redhat.com \
--cc=gleb@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mtosatti@redhat.com \
--cc=stable-review@kernel.org \
--cc=stable@kernel.org \
--cc=stefan.bader@canonical.com \
--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®