]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
io: add support for activating TLS thread safety workaround
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 18 Jul 2025 15:05:12 +0000 (16:05 +0100)
committerFabiano Rosas <farosas@suse.de>
Tue, 22 Jul 2025 22:39:30 +0000 (19:39 -0300)
Add a QIO_CHANNEL_FEATURE_CONCURRENT_IO feature flag.

If this is set on a QIOChannelTLS session object, the TLS
session will be marked as requiring thread safety, which
will activate the workaround for GNUTLS bug 1717 if needed.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Link: https://lore.kernel.org/qemu-devel/20250718150514.2635338-3-berrange@redhat.com
Signed-off-by: Fabiano Rosas <farosas@suse.de>
include/io/channel.h
io/channel-tls.c

index 62b657109c7d9ad14307e65333cfbe2d7108c465..234e5db70dd4ab0e8a401858b58ef48889366e55 100644 (file)
@@ -46,6 +46,7 @@ enum QIOChannelFeature {
     QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY,
     QIO_CHANNEL_FEATURE_READ_MSG_PEEK,
     QIO_CHANNEL_FEATURE_SEEKABLE,
+    QIO_CHANNEL_FEATURE_CONCURRENT_IO,
 };
 
 
index db2ac1deae63e7e1e9dc37a433f7831af979267f..a8248a9216b6a8d7a766afc52ac929fb435265b0 100644 (file)
@@ -241,6 +241,11 @@ void qio_channel_tls_handshake(QIOChannelTLS *ioc,
 {
     QIOTask *task;
 
+    if (qio_channel_has_feature(QIO_CHANNEL(ioc),
+                                QIO_CHANNEL_FEATURE_CONCURRENT_IO)) {
+        qcrypto_tls_session_require_thread_safety(ioc->session);
+    }
+
     task = qio_task_new(OBJECT(ioc),
                         func, opaque, destroy);