[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS hands
From: |
Peter Xu |
Subject: |
Re: [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake |
Date: |
Fri, 2 Mar 2018 14:18:47 +0800 |
User-agent: |
Mutt/1.9.1 (2017-09-22) |
On Thu, Mar 01, 2018 at 03:50:01PM +0000, Daniel P. Berrangé wrote:
> On Thu, Mar 01, 2018 at 04:44:34PM +0800, Peter Xu wrote:
> > qio_channel_tls_handshake_full() is introduced to allow the TLS to be
> > run on a non-default context. Still, no functional change.
> >
> > Signed-off-by: Peter Xu <address@hidden>
> > ---
> > include/io/channel-tls.h | 17 ++++++++++++++++
> > io/channel-tls.c | 51
> > +++++++++++++++++++++++++++++++++++-------------
> > 2 files changed, 54 insertions(+), 14 deletions(-)
> >
>
> > static void qio_channel_tls_handshake_task(QIOChannelTLS *ioc,
> > - QIOTask *task)
> > + QIOTask *task,
> > + GMainContext *context)
> > {
> > Error *err = NULL;
> > QCryptoTLSSessionHandshakeStatus status;
> > @@ -171,6 +177,11 @@ static void
> > qio_channel_tls_handshake_task(QIOChannelTLS *ioc,
> > qio_task_complete(task);
> > } else {
> > GIOCondition condition;
> > + QIOChannelTLSData *data = g_new0(typeof(*data), 1);
> > +
> > + data->task = task;
> > + data->context = context;
>
> The 'context' reference is only valid for as long as the caller
> exists. So you need to acquire a reference on 'context' here....
>
>
> > @@ -191,20 +203,23 @@ static gboolean
> > qio_channel_tls_handshake_io(QIOChannel *ioc,
> > GIOCondition condition,
> > gpointer user_data)
> > {
> > - QIOTask *task = user_data;
> > + QIOChannelTLSData *data = user_data;
> > + QIOTask *task = data->task;
> > + GMainContext *context = data->context;
> > QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
> > qio_task_get_source(task));
> >
> > - qio_channel_tls_handshake_task(
> > - tioc, task);
>
> > + g_free(data);
> > + qio_channel_tls_handshake_task(tioc, task, context);
>
> And release the reference on context here.
Yeah, fixed both. Thanks,
--
Peter Xu
- Re: [Qemu-devel] [PATCH v2 08/15] chardev: allow telnet gsource to switch gcontext, (continued)
- [Qemu-devel] [PATCH v2 10/15] qio: non-default context for async conn, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 09/15] qio: non-default context for threaded qtask, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 12/15] chardev: introduce chr_machine_done hook, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 13/15] char: use chardev's gcontext for async connect, Peter Xu, 2018/03/01
- [Qemu-devel] [PATCH v2 14/15] chardev: tcp: postpone async connection setup, Peter Xu, 2018/03/01