[PATCH 0/3 for 9.0] Fix TLS support for chardevs and incoming data loss on EOF

Daniel P. Berrangé posted 3 patches 1 month, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240318182330.96738-1-berrange@redhat.com
Maintainers: "Marc-André Lureau" <marcandre.lureau@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>
chardev/char-io.c     | 55 +++++++++++++++++++++++++++++++++++++++----
chardev/char-socket.c | 22 ++++++++++++++---
2 files changed, 69 insertions(+), 8 deletions(-)
[PATCH 0/3 for 9.0] Fix TLS support for chardevs and incoming data loss on EOF
Posted by Daniel P. Berrangé 1 month, 1 week ago
This fixes a problem with TLS support on chardevs that Thomas has
previously attempted to deal with:

  https://lists.nongnu.org/archive/html/qemu-devel/2024-02/msg06915.html

Unfortunately that fix caused unexpected side effects that resulted
in premature termination of the TLS connection. See patch 2 for
details.

I've since identified the root cause of the problem that Thomas was
trying to fix - bad assumptions about GSource 'prepare' functions
always being run. See patch 3 for details.

Patch 3 re-exposed a bug we've know about for a while whereby incoming
data on chardevs is sometimes discarded when POLLHUP is reported at the
same time. This required patch 1 to be applied before doing the revert
in patch 3, otherwise test-char would now very frequently fail.

So we get 2 bug fixes for the price of one :-)

Daniel P. Berrangé (3):
  chardev: lower priority of the HUP GSource in socket chardev
  Revert "chardev/char-socket: Fix TLS io channels sending too much data
    to the backend"
  Revert "chardev: use a child source for qio input source"

 chardev/char-io.c     | 55 +++++++++++++++++++++++++++++++++++++++----
 chardev/char-socket.c | 22 ++++++++++++++---
 2 files changed, 69 insertions(+), 8 deletions(-)

-- 
2.43.0


Re: [PATCH 0/3 for 9.0] Fix TLS support for chardevs and incoming data loss on EOF
Posted by Thomas Huth 1 month, 1 week ago
On 18/03/2024 19.23, Daniel P. Berrangé wrote:
> This fixes a problem with TLS support on chardevs that Thomas has
> previously attempted to deal with:
> 
>    https://lists.nongnu.org/archive/html/qemu-devel/2024-02/msg06915.html
> 
> Unfortunately that fix caused unexpected side effects that resulted
> in premature termination of the TLS connection. See patch 2 for
> details.
> 
> I've since identified the root cause of the problem that Thomas was
> trying to fix - bad assumptions about GSource 'prepare' functions
> always being run. See patch 3 for details.
> 
> Patch 3 re-exposed a bug we've know about for a while whereby incoming
> data on chardevs is sometimes discarded when POLLHUP is reported at the
> same time. This required patch 1 to be applied before doing the revert
> in patch 3, otherwise test-char would now very frequently fail.
> 
> So we get 2 bug fixes for the price of one :-)
> 
> Daniel P. Berrangé (3):
>    chardev: lower priority of the HUP GSource in socket chardev
>    Revert "chardev/char-socket: Fix TLS io channels sending too much data
>      to the backend"
>    Revert "chardev: use a child source for qio input source"

Thank you very much for fixing this! I've now also checked that it fixes the 
test scenario for me:

Tested-by: Thomas Huth <thuth@redhat.com>