summary refs log tree commit diff stats
path: root/results/classifier/semantic-bugs-usermode/test/2971
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-26 11:32:28 +0200
committerChristian Krinitsin <mail@krinitsin.com>2025-06-26 11:32:36 +0200
commitadedf8771bc4de3113041ca21bd4d0d1c0014b6a (patch)
tree1e8e456a6e4247061767e0d42740a62102ae1550 /results/classifier/semantic-bugs-usermode/test/2971
parentba2789bd7d81618a42dc7f69706a7acfa591630a (diff)
downloadqemu-analysis-adedf8771bc4de3113041ca21bd4d0d1c0014b6a.tar.gz
qemu-analysis-adedf8771bc4de3113041ca21bd4d0d1c0014b6a.zip
filter for semantic-user-mode bugs
Diffstat (limited to 'results/classifier/semantic-bugs-usermode/test/2971')
-rw-r--r--results/classifier/semantic-bugs-usermode/test/297157
1 files changed, 57 insertions, 0 deletions
diff --git a/results/classifier/semantic-bugs-usermode/test/2971 b/results/classifier/semantic-bugs-usermode/test/2971
new file mode 100644
index 000000000..2ee49f8b8
--- /dev/null
+++ b/results/classifier/semantic-bugs-usermode/test/2971
@@ -0,0 +1,57 @@
+instruction: 0.834
+vnc: 0.780
+device: 0.770
+assembly: 0.671
+network: 0.667
+socket: 0.623
+graphic: 0.579
+semantic: 0.515
+boot: 0.473
+other: 0.425
+KVM: 0.396
+mistranslation: 0.282
+
+loongarch64 crashes caused by lenient instruction decoding of vldi and xvldi
+Description of problem:
+Lenient instruction decoding of `vldi` and `xvldi` leads to Qemu crashes.
+
+The decoding of `vldi` and `xvldi` instruction allows for instructions with illegal immediates.
+
+`target/loongarch/insns.decode`:
+
+```
+vldi             0111 00111110 00 ............. .....     @v_i13
+xvldi            0111 01111110 00 ............. .....     @v_i13
+```
+
+This is considered in `target/loongarch/tcg/insn_trans/trans_vec.c.inc`:
+
+```C
+    /*
+     * imm bit [11:8] is mode, mode value is 0-12.
+     * other values are invalid.
+     */
+```
+
+However, an assertion error is raised when this condition is violated and qemu crashes:
+
+```
+**
+ERROR:target/loongarch/insn_trans/trans_vec.c.inc:3574:vldi_get_value: code should not be reached
+Bail out! ERROR:target/loongarch/insn_trans/trans_vec.c.inc:3574:vldi_get_value: code should not be reached
+```
+
+On hardware (Loongson 3A5000), these instructions cause a SIGILL.
+Steps to reproduce:
+1. compile the `test_inv_vldi` test program for loongarch64 (see additional information)
+2. run `qemu-loongarch64-static ./test_inv_vldi`
+Additional information:
+I will post a patch for this issue to the mailing list soon.
+
+`test_inv_vldi` source code:
+
+```C
+int main(int argc, char** argv) {
+    asm volatile(".4byte 0x73e3a000");    
+}
+```