It's unfortunate that vsock in Linux can be broken if some but not all
vsock modules needed are loaded. As we are testing loopback
(VMADDR_CID_LOCAL), require that vsock_loopback is loaded.
Linux is able to autoload the correct module(s) if vsock.ko is _not_
loaded. We could in theory enhance the test to check this, but that
leaves us with uncertainty about whether the test could work (eg. Is
vsock available as a module in this kernel? Is this even Linux?)
Reported-by: Ming Xie
Thanks: Stefano Garzarella
Fixes:
https://bugzilla.redhat.com/show_bug.cgi?id=2069558
---
tests/functions.sh.in | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tests/functions.sh.in b/tests/functions.sh.in
index 6d41f683..7877c84d 100644
--- a/tests/functions.sh.in
+++ b/tests/functions.sh.in
@@ -240,11 +240,13 @@ requires_non_root ()
}
# Tests that use the vsock interface will fail if vsock is not
-# supported. On Linux you have to load the kernel modules: vsockmon
-# and vsock_loopback.
+# supported. On Linux you have to load the kernel module
+# vsock_loopback. See also
+#
https://bugzilla.redhat.com/show_bug.cgi?id=2069558
requires_vsock_support ()
{
- if ! grep -q ^AF_VSOCK /proc/net/protocols; then
+ if ! grep -q ^AF_VSOCK /proc/net/protocols ||
+ ! lsmod | grep ^vsock_loopback; then
echo "$0: test skipped because AF_VSOCK is not supported."
exit 77
fi
--
2.35.1