Repository navigation
Commit 3ca9419
KVM: X86: Fix userspace set invalid CR4
Reported by syzkaller:
WARNING: CPU: 0 PID: 6544 at /home/kernel/data/kvm/arch/x86/kvm//vmx/vmx.c:4689 handle_desc+0x37/0x40 [kvm_intel]
CPU: 0 PID: 6544 Comm: a.out Tainted: G OE 5.3.0-rc4+ #4
RIP: 0010:handle_desc+0x37/0x40 [kvm_intel]
Call Trace:
vmx_handle_exit+0xbe/0x6b0 [kvm_intel]
vcpu_enter_guest+0x4dc/0x18d0 [kvm]
kvm_arch_vcpu_ioctl_run+0x407/0x660 [kvm]
kvm_vcpu_ioctl+0x3ad/0x690 [kvm]
do_vfs_ioctl+0xa2/0x690
ksys_ioctl+0x6d/0x80
__x64_sys_ioctl+0x1a/0x20
do_syscall_64+0x74/0x720
entry_SYSCALL_64_after_hwframe+0x49/0xbe
When CR4.UMIP is set, guest should have UMIP cpuid flag. Current
kvm set_sregs function doesn't have such check when userspace inputs
sregs values. SECONDARY_EXEC_DESC is enabled on writes to CR4.UMIP
in vmx_set_cr4 though guest doesn't have UMIP cpuid flag. The testcast
triggers handle_desc warning when executing ltr instruction since
guest architectural CR4 doesn't set UMIP. This patch fixes it by
adding valid CR4 and CPUID combination checking in __set_sregs.
syzkaller source: https://syzkaller.appspot.com/x/repro.c?x=138efb99600000
Reported-by: [email protected]
Cc: [email protected]
Signed-off-by: Wanpeng Li <[email protected]>
Reviewed-by: Sean Christopherson <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>1 parent a1a640b commit 3ca9419
1 file changed
Lines changed: 21 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
885 | 885 | | |
886 | 886 | | |
887 | 887 | | |
888 | | - | |
| 888 | + | |
889 | 889 | | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | 890 | | |
895 | | - | |
| 891 | + | |
896 | 892 | | |
897 | 893 | | |
898 | | - | |
| 894 | + | |
899 | 895 | | |
900 | 896 | | |
901 | | - | |
| 897 | + | |
902 | 898 | | |
903 | 899 | | |
904 | | - | |
| 900 | + | |
905 | 901 | | |
906 | 902 | | |
907 | | - | |
| 903 | + | |
908 | 904 | | |
909 | 905 | | |
910 | | - | |
| 906 | + | |
911 | 907 | | |
912 | 908 | | |
913 | | - | |
| 909 | + | |
914 | 910 | | |
915 | 911 | | |
| 912 | + | |
| 913 | + | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
916 | 924 | | |
917 | 925 | | |
918 | 926 | | |
| |||
8714 | 8722 | | |
8715 | 8723 | | |
8716 | 8724 | | |
8717 | | - | |
8718 | | - | |
8719 | | - | |
8720 | | - | |
8721 | 8725 | | |
8722 | 8726 | | |
8723 | 8727 | | |
| |||
8736 | 8740 | | |
8737 | 8741 | | |
8738 | 8742 | | |
8739 | | - | |
| 8743 | + | |
8740 | 8744 | | |
8741 | 8745 | | |
8742 | 8746 | | |
| |||
0 commit comments