qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Lukas Straub <lukasstraub2@web.de>
To: qemu-devel <qemu-devel@nongnu.org>
Cc: "Kevin Wolf" <kwolf@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>,
	qemu-block <qemu-block@nongnu.org>,
	"Juan Quintela" <quintela@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Max Reitz" <mreitz@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Marc-André Lureau" <marcandre.lureau@redhat.com>
Subject: [PATCH v5 5/7] io/channel-tls.c: make qio_channel_tls_shutdown thread-safe
Date: Tue, 23 Jun 2020 16:42:56 +0200	[thread overview]
Message-ID: <c05e7d6cc8484965d8041b90c92370a9828029d6.1592923201.git.lukasstraub2@web.de> (raw)
In-Reply-To: <cover.1592923201.git.lukasstraub2@web.de>

[-- Attachment #1: Type: text/plain, Size: 1274 bytes --]

Make qio_channel_tls_shutdown thread-safe by using atomics when
accessing tioc->shutdown.

Signed-off-by: Lukas Straub <lukasstraub2@web.de>
---
 io/channel-tls.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/io/channel-tls.c b/io/channel-tls.c
index 7ec8ceff2f..b350c84640 100644
--- a/io/channel-tls.c
+++ b/io/channel-tls.c
@@ -23,6 +23,7 @@
 #include "qemu/module.h"
 #include "io/channel-tls.h"
 #include "trace.h"
+#include "qemu/atomic.h"


 static ssize_t qio_channel_tls_write_handler(const char *buf,
@@ -277,7 +278,8 @@ static ssize_t qio_channel_tls_readv(QIOChannel *ioc,
                     return QIO_CHANNEL_ERR_BLOCK;
                 }
             } else if (errno == ECONNABORTED &&
-                       (tioc->shutdown & QIO_CHANNEL_SHUTDOWN_READ)) {
+                       (atomic_load_acquire(&tioc->shutdown) &
+                        QIO_CHANNEL_SHUTDOWN_READ)) {
                 return 0;
             }

@@ -361,7 +363,7 @@ static int qio_channel_tls_shutdown(QIOChannel *ioc,
 {
     QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);

-    tioc->shutdown |= how;
+    atomic_or(&tioc->shutdown, how);

     return qio_channel_shutdown(tioc->master, how, errp);
 }
--
2.20.1


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2020-06-23 14:53 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-23 14:42 [PATCH v5 0/7] Introduce 'yank' oob qmp command to recover from hanging qemu Lukas Straub
2020-06-23 14:42 ` [PATCH v5 1/7] Introduce yank feature Lukas Straub
2020-07-28 11:34   ` Daniel P. Berrangé
2020-06-23 14:42 ` [PATCH v5 2/7] block/nbd.c: Add " Lukas Straub
2020-07-28 11:35   ` Daniel P. Berrangé
2020-06-23 14:42 ` [PATCH v5 3/7] chardev/char-socket.c: " Lukas Straub
2020-07-28 11:35   ` Daniel P. Berrangé
2020-06-23 14:42 ` [PATCH v5 4/7] migration: " Lukas Straub
2020-07-28 11:36   ` Daniel P. Berrangé
2020-06-23 14:42 ` Lukas Straub [this message]
2020-07-28 11:39   ` [PATCH v5 5/7] io/channel-tls.c: make qio_channel_tls_shutdown thread-safe Daniel P. Berrangé
2020-06-23 14:42 ` [PATCH v5 6/7] io: Document thread-safety of qio_channel_shutdown Lukas Straub
2020-07-28 11:39   ` Daniel P. Berrangé
2020-06-23 14:43 ` [PATCH v5 7/7] MAINTAINERS: Add myself as maintainer for yank feature Lukas Straub
2020-07-28 11:41   ` Daniel P. Berrangé
2020-06-24 19:47 ` [PATCH v5 0/7] Introduce 'yank' oob qmp command to recover from hanging qemu Lukas Straub
2020-07-05  9:35   ` Lukas Straub
2020-07-28 10:29 ` Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c05e7d6cc8484965d8041b90c92370a9828029d6.1592923201.git.lukasstraub2@web.de \
    --to=lukasstraub2@web.de \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).