#include const char *abi(void) { #if defined(__amd64__) || defined(__x86_64__) || defined(__AMD64__) || defined(_M_X64) || defined(__amd64) return "amd64"; #elif defined(__i386__) || defined(__x86__) || defined(__X86__) || defined(_M_IX86) || defined(__i386) return "x86"; #elif defined(__ia64__) || defined(__IA64__) || defined(__M_IA64) return "ia64"; #elif defined(__SPU__) return "cellspu"; #elif defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || defined(_ARCH_PPC64) return "ppc64"; #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) return "ppc32"; #elif defined(__sparcv9__) || defined(__sparcv9) return "sparcv9"; #elif defined(__sparc_v8__) return "sparcv8"; #elif defined(__sparc__) || defined(__sparc) if (sizeof(long) == 4) return "sparcv8"; return "sparcv9"; #elif defined(__ARM_EABI__) return "armeabi"; #elif defined(__arm__) return "arm"; #elif defined(__mips__) || defined(__mips) || defined(__MIPS__) # if defined(_ABIO32) return "mipso32"; # elif defined(_ABIN32) return "mips32"; # else return "mips64"; # endif #else return "default"; #endif } int main(void) { printf("%s\n", abi()); return 0; } on> net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRadim Krčmář <rkrcmar@redhat.com>2016-11-23 21:15:27 +0100
committerRadim Krčmář <rkrcmar@redhat.com>2016-11-24 18:37:19 +0100
commit81cdb259fb6d8c1c4ecfeea389ff5a73c07f5755 (patch)
treec0e087707bb37d045abc32dce1888afcfa4c977d
parent2117d5398c81554fbf803f5fd1dc55eb78216c0c (diff)
KVM: x86: fix out-of-bounds accesses of rtc_eoi map
KVM was using arrays of size KVM_MAX_VCPUS with vcpu_id, but ID can be bigger that the maximal number of VCPUs, resulting in out-of-bounds access. Found by syzkaller: BUG: KASAN: slab-out-of-bounds in __apic_accept_irq+0xb33/0xb50 at addr [...] Write of size 1 by task a.out/27101 CPU: 1 PID: 27101 Comm: a.out Not tainted 4.9.0-rc5+ #49 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011 [...] Call Trace: [...] __apic_accept_irq+0xb33/0xb50 arch/x86/kvm/lapic.c:905 [...] kvm_apic_set_irq+0x10e/0x180 arch/x86/kvm/lapic.c:495 [...] kvm_irq_delivery_to_apic+0x732/0xc10 arch/x86/kvm/irq_comm.c:86 [...] ioapic_service+0x41d/0x760 arch/x86/kvm/ioapic.c:360 [...] ioapic_set_irq+0x275/0x6c0 arch/x86/kvm/ioapic.c:222 [...] kvm_ioapic_inject_all arch/x86/kvm/ioapic.c:235 [...] kvm_set_ioapic+0x223/0x310 arch/x86/kvm/ioapic.c:670 [...] kvm_vm_ioctl_set_irqchip arch/x86/kvm/x86.c:3668 [...] kvm_arch_vm_ioctl+0x1a08/0x23c0 arch/x86/kvm/x86.c:3999 [...] kvm_vm_ioctl+0x1fa/0x1a70 arch/x86/kvm/../../../virt/kvm/kvm_main.c:3099 Reported-by: Dmitry Vyukov <dvyukov@google.com> Cc: stable@vger.kernel.org Fixes: af1bae5497b9 ("KVM: x86: bump KVM_MAX_VCPU_ID to 1023") Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>