tests: Wait for migration completion on destination QEMU to avoid failures
authorStefan Berger <stefanb@linux.ibm.com>
Wed, 16 Oct 2024 15:21:59 +0000 (11:21 -0400)
committerStefan Berger <stefanb@linux.ibm.com>
Fri, 18 Oct 2024 11:58:04 +0000 (07:58 -0400)
Rather than waiting for the completion of migration on the source side,
wait for it on the destination QEMU side to avoid accessing the TPM TIS
memory mapped registers before QEMU could restore their state. This
error condition could be triggered on busy systems where the destination
QEMU did not have enough time to restore the TIS state while the test case
was already reading its registers. The test case was for example reading
the STS register and received an unexpected value (0xffffffff), which
lead to a segmentation fault later on due to trying to read 0xffff bytes
from the TIS into a buffer.

Cc: <qemu-stable@nongnu.org>
Reported-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
tests/qtest/tpm-tests.c

index fb94496bbd8614219ae8416e97c37740ad5e09ed..197714f8d99aeffebb7e32465e04489c267c7372 100644 (file)
@@ -114,7 +114,7 @@ void tpm_test_swtpm_migration_test(const char *src_tpm_path,
                      sizeof(tpm_pcrread_resp));
 
     tpm_util_migrate(src_qemu, uri);
-    tpm_util_wait_for_migration_complete(src_qemu);
+    tpm_util_wait_for_migration_complete(dst_qemu);
 
     tpm_util_pcrread(dst_qemu, tx, tpm_pcrread_resp,
                      sizeof(tpm_pcrread_resp));