[PATCH] io/channel-socket: Document why we can ignore socket_set_cork() errors

Peter Maydell posted 1 patch 3 weeks, 5 days ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260630093518.2325304-1-peter.maydell@linaro.org
Maintainers: "Daniel P. Berrangé" <berrange@redhat.com>
io/channel-socket.c | 6 ++++++
1 file changed, 6 insertions(+)
[PATCH] io/channel-socket: Document why we can ignore socket_set_cork() errors
Posted by Peter Maydell 3 weeks, 5 days ago
In qio_channel_socket_set_cork(), we call socket_set_cork() but
ignore its success/failure return value.  This is OK because we are
implementing qio_channel_set_cork() here, and that function's API
documentation states that the setting is merely a hint.  So even if
setting TCP_CORK on the underlying socket fails for some reason, this
isn't going to be a problem for the caller; correspondingly the
qio_channel_set_cork() function has no error return.

Add a comment in qio_channel_socket_set_cork() explaining why we
don't check for errors.

Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2254
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
Spotted by a static analyzer; it seemed to me worth adding the comment.
---
 io/channel-socket.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/io/channel-socket.c b/io/channel-socket.c
index ea2ec84108..12773b832c 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -946,6 +946,12 @@ qio_channel_socket_set_cork(QIOChannel *ioc,
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
     int v = enabled ? 1 : 0;
 
+    /*
+     * We can ignore the error return from socket_set_cork() because
+     * at the QIO API level set_cork is only a hint, and so
+     * qio_channel_set_cork() can never fail even if it didn't
+     * actually do anything.
+     */
     socket_set_cork(sioc->fd, v);
 }
 
-- 
2.43.0
Re: [PATCH] io/channel-socket: Document why we can ignore socket_set_cork() errors
Posted by Daniel P. Berrangé 3 weeks, 5 days ago
On Tue, Jun 30, 2026 at 10:35:18AM +0100, Peter Maydell wrote:
> In qio_channel_socket_set_cork(), we call socket_set_cork() but
> ignore its success/failure return value.  This is OK because we are
> implementing qio_channel_set_cork() here, and that function's API
> documentation states that the setting is merely a hint.  So even if
> setting TCP_CORK on the underlying socket fails for some reason, this
> isn't going to be a problem for the caller; correspondingly the
> qio_channel_set_cork() function has no error return.
> 
> Add a comment in qio_channel_socket_set_cork() explaining why we
> don't check for errors.
> 
> Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2254
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
> Spotted by a static analyzer; it seemed to me worth adding the comment.
> ---
>  io/channel-socket.c | 6 ++++++
>  1 file changed, 6 insertions(+)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

and queued.

> 
> diff --git a/io/channel-socket.c b/io/channel-socket.c
> index ea2ec84108..12773b832c 100644
> --- a/io/channel-socket.c
> +++ b/io/channel-socket.c
> @@ -946,6 +946,12 @@ qio_channel_socket_set_cork(QIOChannel *ioc,
>      QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
>      int v = enabled ? 1 : 0;
>  
> +    /*
> +     * We can ignore the error return from socket_set_cork() because
> +     * at the QIO API level set_cork is only a hint, and so
> +     * qio_channel_set_cork() can never fail even if it didn't
> +     * actually do anything.
> +     */
>      socket_set_cork(sioc->fd, v);
>  }
>  
> -- 
> 2.43.0
> 
> 

With regards,
Daniel
-- 
|: https://berrange.com       ~~        https://hachyderm.io/@berrange :|
|: https://libvirt.org          ~~          https://entangle-photo.org :|
|: https://pixelfed.art/berrange   ~~    https://fstop138.berrange.com :|