[PATCH 2/2] vfio scsi ui: Error-check qio_channel_socket_connect_sync() the same way

Markus Armbruster posted 2 patches 3 months, 3 weeks ago
Maintainers: John Levon <john.levon@nutanix.com>, Thanos Makatos <thanos.makatos@nutanix.com>, "Cédric Le Goater" <clg@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>, Marcelo Tosatti <mtosatti@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>
[PATCH 2/2] vfio scsi ui: Error-check qio_channel_socket_connect_sync() the same way
Posted by Markus Armbruster 3 months, 3 weeks ago
qio_channel_socket_connect_sync() returns 0 on success, and -1 on
failure, with errp set.  Some callers check the return value, and some
check whether errp was set.

For consistency, always check the return value, and always check it's
negative.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 hw/vfio-user/proxy.c     | 2 +-
 scsi/pr-manager-helper.c | 9 ++-------
 ui/input-barrier.c       | 5 +----
 3 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/hw/vfio-user/proxy.c b/hw/vfio-user/proxy.c
index 2275d3fe39..2c03d49f97 100644
--- a/hw/vfio-user/proxy.c
+++ b/hw/vfio-user/proxy.c
@@ -885,7 +885,7 @@ VFIOUserProxy *vfio_user_connect_dev(SocketAddress *addr, Error **errp)
 
     sioc = qio_channel_socket_new();
     ioc = QIO_CHANNEL(sioc);
-    if (qio_channel_socket_connect_sync(sioc, addr, errp)) {
+    if (qio_channel_socket_connect_sync(sioc, addr, errp) < 0) {
         object_unref(OBJECT(ioc));
         return NULL;
     }
diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c
index 6b86f01b01..aea751fb04 100644
--- a/scsi/pr-manager-helper.c
+++ b/scsi/pr-manager-helper.c
@@ -105,20 +105,15 @@ static int pr_manager_helper_initialize(PRManagerHelper *pr_mgr,
         .u.q_unix.path = path
     };
     QIOChannelSocket *sioc = qio_channel_socket_new();
-    Error *local_err = NULL;
-
     uint32_t flags;
     int r;
 
     assert(!pr_mgr->ioc);
     qio_channel_set_name(QIO_CHANNEL(sioc), "pr-manager-helper");
-    qio_channel_socket_connect_sync(sioc,
-                                    &saddr,
-                                    &local_err);
+    r = qio_channel_socket_connect_sync(sioc, &saddr, errp);
     g_free(path);
-    if (local_err) {
+    if (r < 0) {
         object_unref(OBJECT(sioc));
-        error_propagate(errp, local_err);
         return -ENOTCONN;
     }
 
diff --git a/ui/input-barrier.c b/ui/input-barrier.c
index 9793258aac..0a2198ca50 100644
--- a/ui/input-barrier.c
+++ b/ui/input-barrier.c
@@ -490,7 +490,6 @@ static gboolean input_barrier_event(QIOChannel *ioc G_GNUC_UNUSED,
 static void input_barrier_complete(UserCreatable *uc, Error **errp)
 {
     InputBarrier *ib = INPUT_BARRIER(uc);
-    Error *local_err = NULL;
 
     if (!ib->name) {
         error_setg(errp, QERR_MISSING_PARAMETER, "name");
@@ -506,9 +505,7 @@ static void input_barrier_complete(UserCreatable *uc, Error **errp)
     ib->sioc = qio_channel_socket_new();
     qio_channel_set_name(QIO_CHANNEL(ib->sioc), "barrier-client");
 
-    qio_channel_socket_connect_sync(ib->sioc, &ib->saddr, &local_err);
-    if (local_err) {
-        error_propagate(errp, local_err);
+    if (qio_channel_socket_connect_sync(ib->sioc, &ib->saddr, errp) < 0) {
         return;
     }
 
-- 
2.49.0
Re: [PATCH 2/2] vfio scsi ui: Error-check qio_channel_socket_connect_sync() the same way
Posted by Michael Tokarev 2 months, 1 week ago
On 23.07.2025 16:32, Markus Armbruster wrote:
> qio_channel_socket_connect_sync() returns 0 on success, and -1 on
> failure, with errp set.  Some callers check the return value, and some
> check whether errp was set.
> 
> For consistency, always check the return value, and always check it's
> negative.

Ditto for this one - applying this for qemu-stable (10.0 & 10.1).
It doesn't hurt, and the code in longer-supported branches will
be less different from the master branch, making future changes,
if any, easier to pick up (there were multiple fixes in this area
recently).

Please let me know if I shouldn't :)

Thanks,

/mjt
Re: [PATCH 2/2] vfio scsi ui: Error-check qio_channel_socket_connect_sync() the same way
Posted by Zhao Liu 2 months, 2 weeks ago
On Wed, Jul 23, 2025 at 03:32:57PM +0200, Markus Armbruster wrote:
> Date: Wed, 23 Jul 2025 15:32:57 +0200
> From: Markus Armbruster <armbru@redhat.com>
> Subject: [PATCH 2/2] vfio scsi ui: Error-check
>  qio_channel_socket_connect_sync() the same way
> 
> qio_channel_socket_connect_sync() returns 0 on success, and -1 on
> failure, with errp set.  Some callers check the return value, and some
> check whether errp was set.
> 
> For consistency, always check the return value, and always check it's
> negative.
> 
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>  hw/vfio-user/proxy.c     | 2 +-
>  scsi/pr-manager-helper.c | 9 ++-------
>  ui/input-barrier.c       | 5 +----
>  3 files changed, 4 insertions(+), 12 deletions(-)

Reviewed-by: Zhao Liu <zhao1.liu@intel.com>