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
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 :|
© 2016 - 2026 Red Hat, Inc.