lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 17 Mar 2022 19:43:02 +0200
From:   Maxim Levitsky <mlevitsk@...hat.com>
To:     Paolo Bonzini <pbonzini@...hat.com>, linux-kernel@...r.kernel.org,
        kvm@...r.kernel.org
Cc:     seanjc@...gle.com
Subject: Re: [PATCH v3 6/6] KVM: x86: allow defining return-0 static calls

On Thu, 2022-02-17 at 13:08 -0500, Paolo Bonzini wrote:
> A few vendor callbacks are only used by VMX, but they return an integer
> or bool value.  Introduce KVM_X86_OP_OPTIONAL_RET0 for them: if a func is
> NULL in struct kvm_x86_ops, it will be changed to __static_call_return0
> when updating static calls.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@...hat.com>
> ---
>  arch/x86/include/asm/kvm-x86-ops.h | 15 +++++++++------
>  arch/x86/include/asm/kvm_host.h    |  4 ++++
>  arch/x86/kvm/svm/avic.c            |  5 -----
>  arch/x86/kvm/svm/svm.c             | 20 --------------------
>  arch/x86/kvm/x86.c                 |  2 +-
>  kernel/static_call.c               |  1 +
>  6 files changed, 15 insertions(+), 32 deletions(-)
> 
> diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h
> index c0ec066a8599..29affccb353c 100644
> --- a/arch/x86/include/asm/kvm-x86-ops.h
> +++ b/arch/x86/include/asm/kvm-x86-ops.h
> @@ -10,7 +10,9 @@ BUILD_BUG_ON(1)
>   *
>   * KVM_X86_OP_OPTIONAL() can be used for those functions that can have
>   * a NULL definition, for example if "static_call_cond()" will be used
> - * at the call sites.
> + * at the call sites.  KVM_X86_OP_OPTIONAL_RET0() can be used likewise
> + * to make a definition optional, but in this case the default will
> + * be __static_call_return0.
>   */
>  KVM_X86_OP(hardware_enable)
>  KVM_X86_OP(hardware_disable)
> @@ -77,15 +79,15 @@ KVM_X86_OP(check_apicv_inhibit_reasons)
>  KVM_X86_OP(refresh_apicv_exec_ctrl)
>  KVM_X86_OP_OPTIONAL(hwapic_irr_update)
>  KVM_X86_OP_OPTIONAL(hwapic_isr_update)
> -KVM_X86_OP_OPTIONAL(guest_apic_has_interrupt)
> +KVM_X86_OP_OPTIONAL_RET0(guest_apic_has_interrupt)
>  KVM_X86_OP_OPTIONAL(load_eoi_exitmap)
>  KVM_X86_OP_OPTIONAL(set_virtual_apic_mode)
>  KVM_X86_OP_OPTIONAL(set_apic_access_page_addr)
>  KVM_X86_OP(deliver_interrupt)
>  KVM_X86_OP_OPTIONAL(sync_pir_to_irr)
> -KVM_X86_OP(set_tss_addr)
> -KVM_X86_OP(set_identity_map_addr)
> -KVM_X86_OP(get_mt_mask)
> +KVM_X86_OP_OPTIONAL_RET0(set_tss_addr)
> +KVM_X86_OP_OPTIONAL_RET0(set_identity_map_addr)
> +KVM_X86_OP_OPTIONAL_RET0(get_mt_mask)
>  KVM_X86_OP(load_mmu_pgd)
>  KVM_X86_OP(has_wbinvd_exit)
>  KVM_X86_OP(get_l2_tsc_offset)
> @@ -103,7 +105,7 @@ KVM_X86_OP_OPTIONAL(vcpu_unblocking)
>  KVM_X86_OP_OPTIONAL(pi_update_irte)
>  KVM_X86_OP_OPTIONAL(pi_start_assignment)
>  KVM_X86_OP_OPTIONAL(apicv_post_state_restore)
> -KVM_X86_OP_OPTIONAL(dy_apicv_has_pending_interrupt)
> +KVM_X86_OP_OPTIONAL_RET0(dy_apicv_has_pending_interrupt)
>  KVM_X86_OP_OPTIONAL(set_hv_timer)
>  KVM_X86_OP_OPTIONAL(cancel_hv_timer)
>  KVM_X86_OP(setup_mce)
> @@ -127,3 +129,4 @@ KVM_X86_OP(vcpu_deliver_sipi_vector)
>  
>  #undef KVM_X86_OP
>  #undef KVM_X86_OP_OPTIONAL
> +#undef KVM_X86_OP_OPTIONAL_RET0
> diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
> index a7e82fc1f1f3..8e512f25a930 100644
> --- a/arch/x86/include/asm/kvm_host.h
> +++ b/arch/x86/include/asm/kvm_host.h
> @@ -1541,6 +1541,7 @@ extern struct kvm_x86_ops kvm_x86_ops;
>  #define KVM_X86_OP(func) \
>  	DECLARE_STATIC_CALL(kvm_x86_##func, *(((struct kvm_x86_ops *)0)->func));
>  #define KVM_X86_OP_OPTIONAL KVM_X86_OP
> +#define KVM_X86_OP_OPTIONAL_RET0 KVM_X86_OP
>  #include <asm/kvm-x86-ops.h>
>  
>  static inline void kvm_ops_static_call_update(void)
> @@ -1550,6 +1551,9 @@ static inline void kvm_ops_static_call_update(void)
>  #define KVM_X86_OP(func) \
>  	WARN_ON(!kvm_x86_ops.func); __KVM_X86_OP(func)
>  #define KVM_X86_OP_OPTIONAL __KVM_X86_OP
> +#define KVM_X86_OP_OPTIONAL_RET0(func) \
> +	static_call_update(kvm_x86_##func, kvm_x86_ops.func ? : \
> +			   (void *) __static_call_return0);
>  #include <asm/kvm-x86-ops.h>
>  #undef __KVM_X86_OP
>  }
> diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c
> index 4245cb99b497..d4fa8c4f3a9a 100644
> --- a/arch/x86/kvm/svm/avic.c
> +++ b/arch/x86/kvm/svm/avic.c
> @@ -650,11 +650,6 @@ void avic_refresh_apicv_exec_ctrl(struct kvm_vcpu *vcpu)
>  	avic_set_pi_irte_mode(vcpu, activated);
>  }
>  
> -bool avic_dy_apicv_has_pending_interrupt(struct kvm_vcpu *vcpu)
> -{
> -	return false;
> -}
> -
>  static void svm_ir_list_del(struct vcpu_svm *svm, struct amd_iommu_pi_data *pi)
>  {
>  	unsigned long flags;
> diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
> index 3daca34020fa..7038c76fa841 100644
> --- a/arch/x86/kvm/svm/svm.c
> +++ b/arch/x86/kvm/svm/svm.c
> @@ -3528,16 +3528,6 @@ static void svm_enable_nmi_window(struct kvm_vcpu *vcpu)
>  	svm->vmcb->save.rflags |= (X86_EFLAGS_TF | X86_EFLAGS_RF);
>  }
>  
> -static int svm_set_tss_addr(struct kvm *kvm, unsigned int addr)
> -{
> -	return 0;
> -}
> -
> -static int svm_set_identity_map_addr(struct kvm *kvm, u64 ident_addr)
> -{
> -	return 0;
> -}
> -
>  static void svm_flush_tlb_current(struct kvm_vcpu *vcpu)
>  {
>  	struct vcpu_svm *svm = to_svm(vcpu);
> @@ -3934,11 +3924,6 @@ static bool svm_has_emulated_msr(struct kvm *kvm, u32 index)
>  	return true;
>  }
>  
> -static u64 svm_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio)
> -{
> -	return 0;
> -}
> -
>  static void svm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu)
>  {
>  	struct vcpu_svm *svm = to_svm(vcpu);
> @@ -4593,10 +4578,6 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
>  	.check_apicv_inhibit_reasons = avic_check_apicv_inhibit_reasons,
>  	.apicv_post_state_restore = avic_apicv_post_state_restore,
>  
> -	.set_tss_addr = svm_set_tss_addr,
> -	.set_identity_map_addr = svm_set_identity_map_addr,
> -	.get_mt_mask = svm_get_mt_mask,
> -
>  	.get_exit_info = svm_get_exit_info,
>  
>  	.vcpu_after_set_cpuid = svm_vcpu_after_set_cpuid,
> @@ -4621,7 +4602,6 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
>  	.nested_ops = &svm_nested_ops,
>  
>  	.deliver_interrupt = svm_deliver_interrupt,
> -	.dy_apicv_has_pending_interrupt = avic_dy_apicv_has_pending_interrupt,
>  	.pi_update_irte = avic_pi_update_irte,
>  	.setup_mce = svm_setup_mce,
>  
> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
> index ab1c4778824a..d3da64106685 100644
> --- a/arch/x86/kvm/x86.c
> +++ b/arch/x86/kvm/x86.c
> @@ -131,6 +131,7 @@ struct kvm_x86_ops kvm_x86_ops __read_mostly;
>  	DEFINE_STATIC_CALL_NULL(kvm_x86_##func,			     \
>  				*(((struct kvm_x86_ops *)0)->func));
>  #define KVM_X86_OP_OPTIONAL KVM_X86_OP
> +#define KVM_X86_OP_OPTIONAL_RET0 KVM_X86_OP
>  #include <asm/kvm-x86-ops.h>
>  EXPORT_STATIC_CALL_GPL(kvm_x86_get_cs_db_l_bits);
>  EXPORT_STATIC_CALL_GPL(kvm_x86_cache_reg);
> @@ -12016,7 +12017,6 @@ void kvm_arch_flush_shadow_memslot(struct kvm *kvm,
>  static inline bool kvm_guest_apic_has_interrupt(struct kvm_vcpu *vcpu)
>  {
>  	return (is_guest_mode(vcpu) &&
> -			kvm_x86_ops.guest_apic_has_interrupt &&
>  			static_call(kvm_x86_guest_apic_has_interrupt)(vcpu));
>  }
>  
> diff --git a/kernel/static_call.c b/kernel/static_call.c
> index 43ba0b1e0edb..76abd46fe6ee 100644
> --- a/kernel/static_call.c
> +++ b/kernel/static_call.c
> @@ -503,6 +503,7 @@ long __static_call_return0(void)
>  {
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(__static_call_return0)
>  
>  #ifdef CONFIG_STATIC_CALL_SELFTEST
>  


Believe me or not, but this patch introduced a regression with 32 bit KVM.
(32 bit L1, 32 bit L2, 64 bit L0 since I am not crazy enough)

The following partial revert "fixes" it:


diff --git a/arch/x86/include/asm/kvm-x86-ops.h b/arch/x86/include/asm/kvm-x86-ops.h
index 20f64e07e359..3388072b2e3b 100644
--- a/arch/x86/include/asm/kvm-x86-ops.h
+++ b/arch/x86/include/asm/kvm-x86-ops.h
@@ -88,7 +88,7 @@ KVM_X86_OP(deliver_interrupt)
 KVM_X86_OP_OPTIONAL(sync_pir_to_irr)
 KVM_X86_OP_OPTIONAL_RET0(set_tss_addr)
 KVM_X86_OP_OPTIONAL_RET0(set_identity_map_addr)
-KVM_X86_OP_OPTIONAL_RET0(get_mt_mask)
+KVM_X86_OP(get_mt_mask)
 KVM_X86_OP(load_mmu_pgd)
 KVM_X86_OP(has_wbinvd_exit)
 KVM_X86_OP(get_l2_tsc_offset)
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index a09b4f1a18f6..0c09292b0611 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -4057,6 +4057,11 @@ static bool svm_has_emulated_msr(struct kvm *kvm, u32 index)
        return true;
 }
 
+static u64 svm_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio)
+{
+       return 0;
+}
+
 static void svm_vcpu_after_set_cpuid(struct kvm_vcpu *vcpu)
 {
        struct vcpu_svm *svm = to_svm(vcpu);
@@ -4718,6 +4723,7 @@ static struct kvm_x86_ops svm_x86_ops __initdata = {
        .check_apicv_inhibit_reasons = avic_check_apicv_inhibit_reasons,
        .apicv_post_state_restore = avic_apicv_post_state_restore,
 
+       .get_mt_mask = svm_get_mt_mask,
        .get_exit_info = svm_get_exit_info,
 
        .vcpu_after_set_cpuid = svm_vcpu_after_set_cpuid,


I guess something with returning u64 made 32 compiler unhappy.

I suspect that __static_call_return0 returns long, which means it returns
32 bit value on 32 bit system.

Maybe we can make it return u64. I don't know if that will break something else though.

This is what is printed when trying to start a VM:


[   22.821817] ------------[ cut here ]------------
[   22.822751] spte = 0xfffffc4465825, level = 1, rsvd bits = 0xffff000000000000
[   22.822771] WARNING: CPU: 14 PID: 3245 at arch/x86/kvm/mmu/spte.c:182 make_spte+0x2d1/0x319 [kvm]
[   22.824452] Modules linked in: uinput kvm_amd(O) kvm(O) irqbypass xt_MASQUERADE xt_conntrack ipt_REJECT tun bridge iptable_mangle iptable_nat nf_nat ebtable_filter ebtables ip6table_filter
ip6_tables rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs rfkill sunrpc dm_mirror dm_region_hash dm_log snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec
snd_hwdep snd_hda_core snd_seq snd_seq_device joydev snd_pcm input_leds snd_timer snd crc32_pclmul pcspkr lpc_ich virtio_input mfd_core rtc_cmos button sch_fq_codel ext4 mbcache jbd2 hid_generic
virtio_gpu usbhid virtio_dma_buf hid drm_shmem_helper sd_mod t10_pi drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cec virtio_net drm net_failover virtio_console i2c_core failover
virtio_scsi ahci libahci crc32c_intel xhci_pci libata xhci_hcd virtio_pci virtio virtio_pci_legacy_dev virtio_pci_modern_dev virtio_ring fuse ipv6 autofs4 [last unloaded: irqbypass]
[   22.832788] CPU: 14 PID: 3245 Comm: CPU 0/KVM Tainted: G           O      5.17.0-rc8.unstable #49
[   22.833681] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-24-g8f3e834 04/01/2014
[   22.834615] EIP: make_spte+0x2d1/0x319 [kvm]
[   22.835088] Code: 01 0f ac f9 07 83 e1 01 8d 0c 89 8d 54 0b ff ff b4 d0 8c 00 00 00 ff b4 d0 88 00 00 00 53 57 56 68 1c 07 9c f0 e8 49 43 c1 d0 <0f> 0b 83 c4 18 89 f0 83 e0 02 74 29 8b 45 e0 f6 80
84 00 00 00 01
[   22.836951] EAX: 00000041 EBX: 00000001 ECX: 00000027 EDX: ed41cd0c
[   22.837570] ESI: c4465825 EDI: 000fffff EBP: c5491bb8 ESP: c5491b74
[   22.838209] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010286
[   22.838914] CR0: 80050033 CR2: 00000000 CR3: 044e5400 CR4: 00350ef0
[   22.839533] Call Trace:
[   22.839788]  mmu_set_spte+0x152/0x319 [kvm]
[   22.840242]  direct_page_fault+0x487/0x510 [kvm]
[   22.840754]  ? kvm_mtrr_check_gfn_range_consistency+0x66/0xe0 [kvm]
[   22.841413]  kvm_tdp_page_fault+0x73/0x7b [kvm]
[   22.841908]  kvm_mmu_page_fault+0x3bb/0x6a6 [kvm]
[   22.842407]  ? timekeeping_get_ns+0x10/0x72
[   22.842849]  ? apic_find_highest_isr+0x24/0x2b [kvm]
[   22.843372]  ? __apic_update_ppr+0x2c/0x67 [kvm]
[   22.843871]  ? apic_update_ppr+0x23/0x57 [kvm]
[   22.844344]  ? kvm_lapic_set_tpr+0x28/0x2a [kvm]
[   22.844875]  npf_interception+0x89/0x91 [kvm_amd]
[   22.845348]  ? npf_interception+0x89/0x91 [kvm_amd]
[   22.845879]  svm_invoke_exit_handler+0x30/0xb6 [kvm_amd]
[   22.846410]  svm_handle_exit+0x17c/0x184 [kvm_amd]
[   22.846914]  kvm_arch_vcpu_ioctl_run+0x11e5/0x14a4 [kvm]
[   22.847478]  ? mod_objcg_state+0xf1/0x10a
[   22.847901]  kvm_vcpu_ioctl+0x16e/0x516 [kvm]
[   22.848365]  ? kvm_vcpu_ioctl+0x16e/0x516 [kvm]
[   22.848879]  ? try_to_wake_up+0x1a0/0x1c9
[   22.849299]  ? put_task_struct+0x15/0x23
[   22.849698]  ? wake_up_q+0x2e/0x39
[   22.850060]  ? __fget+0x1e/0x25
[   22.850377]  ? kvm_uevent_notify_change+0x19a/0x19a [kvm]
[   22.850976]  vfs_ioctl+0x1c/0x26
[   22.851308]  __ia32_sys_ioctl+0x735/0x767
[   22.851714]  ? __ia32_sys_futex_time32+0x125/0x145
[   22.852211]  ? exit_to_user_mode_prepare+0xe2/0x142
[   22.852701]  __do_fast_syscall_32+0x78/0x97
[   22.853149]  do_fast_syscall_32+0x29/0x5b
[   22.853549]  do_SYSENTER_32+0x15/0x17
[   22.853919]  entry_SYSENTER_32+0xa2/0xfb
[   22.854334] EIP: 0xa835c53d
[   22.854624] Code: c4 01 10 03 03 74 c0 01 10 05 03 74 b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 8d 76 00 58 b8 77 00 00 00
cd 80 90 8d 76
[   22.856520] EAX: ffffffda EBX: 00000021 ECX: 0000ae80 EDX: 00000000
[   22.857195] ESI: 096509e0 EDI: 3acfeb40 EBP: 3acfcf48 ESP: 3acfcef8
[   22.857818] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00000212
[   22.858503] ---[ end trace 0000000000000000 ]---
[   22.859768] get_mmio_spte: reserved bits set on MMU-present spte, addr 0xfffff000, hierarchy:
[   22.860631] ------ spte = 0x8913827 level = 2, rsvd bits = 0xffff000000000000
[   22.860633] ------ spte = 0xfffffc4465825 level = 1, rsvd bits = 0xffff000000000000
[   22.861357] ------------[ cut here ]------------
[   22.862590] WARNING: CPU: 14 PID: 3245 at arch/x86/kvm/mmu/mmu.c:3812 kvm_mmu_page_fault+0x2ad/0x6a6 [kvm]
[   22.863620] Modules linked in: uinput kvm_amd(O) kvm(O) irqbypass xt_MASQUERADE xt_conntrack ipt_REJECT tun bridge iptable_mangle iptable_nat nf_nat ebtable_filter ebtables ip6table_filter
ip6_tables rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace fscache netfs rfkill sunrpc dm_mirror dm_region_hash dm_log snd_hda_codec_generic snd_hda_intel snd_intel_dspcfg snd_hda_codec
snd_hwdep snd_hda_core snd_seq snd_seq_device joydev snd_pcm input_leds snd_timer snd crc32_pclmul pcspkr lpc_ich virtio_input mfd_core rtc_cmos button sch_fq_codel ext4 mbcache jbd2 hid_generic
virtio_gpu usbhid virtio_dma_buf hid drm_shmem_helper sd_mod t10_pi drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops cec virtio_net drm net_failover virtio_console i2c_core failover
virtio_scsi ahci libahci crc32c_intel xhci_pci libata xhci_hcd virtio_pci virtio virtio_pci_legacy_dev virtio_pci_modern_dev virtio_ring fuse ipv6 autofs4 [last unloaded: irqbypass]
[   22.871921] CPU: 14 PID: 3245 Comm: CPU 0/KVM Tainted: G        W  O      5.17.0-rc8.unstable #49
[   22.872809] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-24-g8f3e834 04/01/2014
[   22.873749] EIP: kvm_mmu_page_fault+0x2ad/0x6a6 [kvm]
[   22.874281] Code: b4 c2 8c 00 00 00 ff b4 c2 88 00 00 00 ff b5 68 ff ff ff 53 51 68 71 03 9c f0 e8 d5 93 c1 d0 89 b5 68 ff ff ff 83 c4 18 eb a6 <0f> 0b bb ea ff ff ff e9 ce 03 00 00 8b 85 7c ff ff
ff 8b 55 80 e8
[   22.876139] EAX: 00000047 EBX: 000fffff ECX: 00000027 EDX: ed41cd0c
[   22.876767] ESI: 00000000 EDI: 00000001 EBP: c5491d80 ESP: c5491cc0
[   22.877400] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068 EFLAGS: 00010202
[   22.878092] CR0: 80050033 CR2: 00000000 CR3: 044e5400 CR4: 00350ef0
[   22.878716] Call Trace:
[   22.878962]  ? kvm_arch_vcpu_load+0x1a3/0x1ab [kvm]
[   22.879493]  ? avic_update_iommu_vcpu_affinity.constprop.0.isra.0+0xe/0x4a [kvm_amd]
[   22.880257]  ? apic_find_highest_isr+0x24/0x2b [kvm]
[   22.880790]  ? apic_update_ppr+0x23/0x57 [kvm]
[   22.881296]  ? kvm_lapic_set_tpr+0x28/0x2a [kvm]
[   22.881803]  npf_interception+0x89/0x91 [kvm_amd]
[   22.882273]  ? npf_interception+0x89/0x91 [kvm_amd]
[   22.882771]  svm_invoke_exit_handler+0x30/0xb6 [kvm_amd]
[   22.883308]  svm_handle_exit+0x17c/0x184 [kvm_amd]
[   22.883801]  kvm_arch_vcpu_ioctl_run+0x11e5/0x14a4 [kvm]
[   22.884354]  ? mod_objcg_state+0xf1/0x10a
[   22.884764]  kvm_vcpu_ioctl+0x16e/0x516 [kvm]
[   22.885250]  ? kvm_vcpu_ioctl+0x16e/0x516 [kvm]
[   22.885735]  ? try_to_wake_up+0x1a0/0x1c9
[   22.886137]  ? put_task_struct+0x15/0x23
[   22.886532]  ? wake_up_q+0x2e/0x39
[   22.886885]  ? __fget+0x1e/0x25
[   22.887229]  ? kvm_uevent_notify_change+0x19a/0x19a [kvm]
[   22.887796]  vfs_ioctl+0x1c/0x26
[   22.888125]  __ia32_sys_ioctl+0x735/0x767
[   22.888532]  ? __ia32_sys_futex_time32+0x125/0x145
[   22.889006]  ? exit_to_user_mode_prepare+0xe2/0x142
[   22.889516]  __do_fast_syscall_32+0x78/0x97
[   22.889936]  do_fast_syscall_32+0x29/0x5b
[   22.890337]  do_SYSENTER_32+0x15/0x17
[   22.890716]  entry_SYSENTER_32+0xa2/0xfb
[   22.891107] EIP: 0xa835c53d
[   22.891398] Code: c4 01 10 03 03 74 c0 01 10 05 03 74 b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 51 52 55 89 e5 0f 34 cd 80 <5d> 5a 59 c3 90 90 90 90 8d 76 00 58 b8 77 00 00 00
cd 80 90 8d 76
[   22.893339] EAX: ffffffda EBX: 00000021 ECX: 0000ae80 EDX: 00000000
[   22.894090] ESI: 096509e0 EDI: 3acfeb40 EBP: 3acfcf48 ESP: 3acfcef8
[   22.894849] DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 007b EFLAGS: 00000212
[   22.895697] ---[ end trace 0000000000000000 ]---

Best regards,
	Maxim Levitsky


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ