From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56583) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1erQTH-0002Cz-DD for qemu-devel@nongnu.org; Thu, 01 Mar 2018 10:50:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1erQTD-0007b2-EX for qemu-devel@nongnu.org; Thu, 01 Mar 2018 10:50:15 -0500 Received: from mx3-rdu2.redhat.com ([66.187.233.73]:55280 helo=mx1.redhat.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1erQTD-0007af-8a for qemu-devel@nongnu.org; Thu, 01 Mar 2018 10:50:11 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C9A1FEAEA0 for ; Thu, 1 Mar 2018 15:50:10 +0000 (UTC) Date: Thu, 1 Mar 2018 15:50:01 +0000 From: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= Message-ID: <20180301155001.GR14643@redhat.com> Reply-To: Daniel =?utf-8?B?UC4gQmVycmFuZ8Op?= References: <20180301084438.13594-1-peterx@redhat.com> <20180301084438.13594-12-peterx@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180301084438.13594-12-peterx@redhat.com> Subject: Re: [Qemu-devel] [PATCH v2 11/15] qio: non-default context for TLS handshake List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Xu Cc: qemu-devel@nongnu.org, Paolo Bonzini , Juan Quintela , =?utf-8?Q?Marc-Andr=C3=A9?= Lureau , Markus Armbruster , Stefan Hajnoczi , "Dr . David Alan Gilbert" 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 > --- > 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. Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|