Skip to content

Commit f0d8d00

Browse files
sys/linux/test: add syz_kvm_assert_syzos_uexit to existing tests
1 parent a598674 commit f0d8d00

9 files changed

+63
-1
lines changed

sys/linux/test/arm64-syz_kvm_setup_syzos_vm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,12 @@ r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0)
1919
# Run till the first uexit.
2020
#
2121
ioctl$KVM_RUN(r3, AUTO, 0x0)
22+
syz_kvm_assert_syzos_uexit(r5, 0x0)
2223
# Run till the second uexit.
2324
#
2425
ioctl$KVM_RUN(r3, AUTO, 0x0)
26+
syz_kvm_assert_syzos_uexit(r5, 0xaaaa)
27+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
28+
#
29+
ioctl$KVM_RUN(r3, AUTO, 0x0)
30+
syz_kvm_assert_syzos_uexit(r5, 0xffffffffffffffff)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-memwrite

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@memwrite={AUTO, AUTO, @generic={0x
1010

1111
r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
1212
r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0)
13-
# Run till uexit.
13+
# Run till the emulated uexit.
1414
#
1515
ioctl$KVM_RUN(r3, AUTO, 0x0)
16+
syz_kvm_assert_syzos_uexit(r5, 0x0)
17+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
18+
#
19+
ioctl$KVM_RUN(r3, AUTO, 0x0)
20+
syz_kvm_assert_syzos_uexit(r5, 0xffffffffffffffff)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-msr

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil)
88
# 0x603000000013c600 is VBAR_EL1, it aligns the written value on 0x20.
99
#
1010
r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@msr={AUTO, AUTO, {0x603000000013c600, 0xfefefee0}}], AUTO}, 0x0, 0x0)
11+
r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
12+
r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0)
13+
14+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
15+
#
1116
ioctl$KVM_RUN(r3, AUTO, 0x0)
17+
syz_kvm_assert_syzos_uexit(r5, 0xffffffffffffffff)
1218
ioctl$KVM_GET_ONE_REG(r3, AUTO, &AUTO=@arm64_sys={0x603000000013c600, &AUTO})

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-smc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,11 @@ r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@smc={AUTO, AUTO, {0xef000000, [0x0
1818
#
1919
ioctl$KVM_RUN(r3, AUTO, 0x0)
2020
ioctl$KVM_RUN(r3, AUTO, 0x0)
21+
22+
r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
23+
r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0)
24+
25+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
26+
#
27+
ioctl$KVM_RUN(r3, AUTO, 0x0)
28+
syz_kvm_assert_syzos_uexit(r5, 0xffffffffffffffff)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,19 @@ r1 = ioctl$KVM_CREATE_VM(r0, AUTO, 0x0)
66
r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil)
77
r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0)
88
syz_kvm_vgic_v3_setup(r1, 0x1, 0x100)
9+
10+
r4 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
11+
r5 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r4, 0x3, 0x1, r3, 0x0)
12+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
13+
#
914
ioctl$KVM_RUN(r3, AUTO, 0x0)
15+
syz_kvm_assert_syzos_uexit(r5, 0xffffffffffffffff)
1016
#
1117
# Calling KVM_RUN here again would result in infinite loop.
1218
# Instead, signal SPI 32 (0x1000020), so that the guest can execute another uexit in the IRQ handler.
1319
#
1420
ioctl$KVM_IRQ_LINE(r1, AUTO, &AUTO={0x1000020, 0x1})
1521
ioctl$KVM_RUN(r3, AUTO, 0x0)
22+
# 0xfffffffffffffffe is UEXIT_IRQ.
23+
#
24+
syz_kvm_assert_syzos_uexit(r5, 0xfffffffffffffffe)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-cpu1

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,17 @@ r2 = syz_kvm_setup_syzos_vm(r1, &(0x7f0000c00000/0x400000)=nil)
77
r3 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0)
88
r4 = syz_kvm_add_vcpu(r2, &AUTO={0x0, &AUTO=[@irq_setup={AUTO, AUTO, {0x1, 0x20}}], AUTO}, 0x0, 0x0)
99
syz_kvm_vgic_v3_setup(r1, 0x2, 0x100)
10+
11+
r5 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
12+
r6 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r5, 0x3, 0x1, r3, 0x0)
13+
r7 = mmap$KVM_VCPU(&(0x7f000000a000/0x1000)=nil, r5, 0x3, 0x1, r4, 0x0)
14+
1015
ioctl$KVM_RUN(r4, AUTO, 0x0)
16+
syz_kvm_assert_syzos_uexit(r7, 0xffffffffffffffff)
1117
#
1218
# Calling KVM_RUN here again would result in infinite loop.
1319
# Instead, signal SPI 32 on CPU 1 (0x1010020), so that the guest can execute another uexit in the IRQ handler.
1420
#
1521
ioctl$KVM_IRQ_LINE(r1, AUTO, &AUTO={0x1010020, 0x1})
1622
ioctl$KVM_RUN(r3, AUTO, 0x0)
23+
syz_kvm_assert_syzos_uexit(r6, 0xfffffffffffffffe)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,13 @@ ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x0, 0x4, &AUTO=0x08
2121
#
2222
ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x4, 0x0, 0x0})
2323

24+
r5 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
25+
r6 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r5, 0x3, 0x1, r3, 0x0)
26+
27+
# Run till the end of guest_main(). 0xffffffffffffffff is UEXIT_END.
28+
#
2429
ioctl$KVM_RUN(r3, AUTO, 0x0)
30+
syz_kvm_assert_syzos_uexit(r6, 0xffffffffffffffff)
2531
#
2632
# Calling KVM_RUN here again would result in infinite loop.
2733
# Instead, signal LPI 0x2000 that is mapped to the event 0, so that the guest can execute another uexit in the IRQ handler.
@@ -30,3 +36,4 @@ ioctl$KVM_RUN(r3, AUTO, 0x0)
3036
#
3137
ioctl$KVM_SIGNAL_MSI(r1, AUTO, &AUTO={0x8090040, 0x0, 0x0, 0x1, 0x0, ""})
3238
ioctl$KVM_RUN(r3, AUTO, 0x0)
39+
syz_kvm_assert_syzos_uexit(r6, 0xfffffffffffffffe)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-its-cmd

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,17 @@ ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x0, 0x4, &AUTO=0x08
2323
#
2424
ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x4, 0x0, 0x0})
2525
#
26+
# Map struct kvm_run for the VCPU.
27+
#
28+
r5 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
29+
r6 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r5, 0x3, 0x1, r3, 0x0)
30+
#
2631
# This KVM_RUN will stop after receiving the LPI.
2732
#
2833
ioctl$KVM_RUN(r3, AUTO, 0x0)
34+
syz_kvm_assert_syzos_uexit(r6, 0xfffffffffffffffe)
2935
#
3036
# This KVM_RUN will stop after finishing the user program.
3137
#
3238
ioctl$KVM_RUN(r3, AUTO, 0x0)
39+
syz_kvm_assert_syzos_uexit(r6, 0xffffffffffffffff)

sys/linux/test/arm64-syz_kvm_setup_syzos_vm-vgicv3-unroll

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@ ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x3, 0x0, &AUTO=0x10
1313
ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x0, 0x2, &AUTO=0x08000000})
1414
ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x0, 0x5, &AUTO=0x400000080a0000})
1515
ioctl$KVM_SET_DEVICE_ATTR(r4, AUTO, &AUTO=@attr_arm64={0x0, 0x4, 0x0, 0x0})
16+
#
17+
# Map struct kvm_run for the VCPU.
18+
#
19+
r5 = ioctl$KVM_GET_VCPU_MMAP_SIZE(r0, AUTO)
20+
r6 = mmap$KVM_VCPU(&(0x7f0000009000/0x1000)=nil, r5, 0x3, 0x1, r3, 0x0)
1621

1722
ioctl$KVM_RUN(r3, AUTO, 0x0)
23+
syz_kvm_assert_syzos_uexit(r6, 0xffffffffffffffff)
1824
#
1925
# Calling KVM_RUN here again would result in infinite loop.
2026
# Instead, signal SPI 32 (0x1000020), so that the guest can execute another uexit in the IRQ handler.
2127
#
2228
ioctl$KVM_IRQ_LINE(r1, AUTO, &AUTO={0x1000020, 0x1})
2329
ioctl$KVM_RUN(r3, AUTO, 0x0)
30+
syz_kvm_assert_syzos_uexit(r6, 0xfffffffffffffffe)

0 commit comments

Comments
 (0)