From patchwork Thu Jan 25 23:40:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Hao X-Patchwork-Id: 865924 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zS5TL1ftTz9sNV for ; Fri, 26 Jan 2018 02:25:42 +1100 (AEDT) Received: from localhost ([::1]:46396 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eejPI-0005uB-77 for incoming@patchwork.ozlabs.org; Thu, 25 Jan 2018 10:25:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51314) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eejOd-0005sl-0W for qemu-devel@nongnu.org; Thu, 25 Jan 2018 10:24:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eejOa-0006uQ-Df for qemu-devel@nongnu.org; Thu, 25 Jan 2018 10:24:59 -0500 Received: from out1.zte.com.cn ([202.103.147.172]:49008 helo=mxct.zte.com.cn) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eejOa-0006qn-0z for qemu-devel@nongnu.org; Thu, 25 Jan 2018 10:24:56 -0500 Received: from mse01.zte.com.cn (unknown [10.30.3.20]) by Forcepoint Email with ESMTPS id DCBC595E730C422CC214; Thu, 25 Jan 2018 23:24:45 +0800 (CST) Received: from notes_smtp.zte.com.cn ([10.30.1.239]) by mse01.zte.com.cn with ESMTP id w0PFOemU085118; Thu, 25 Jan 2018 23:24:40 +0800 (GMT-8) (envelope-from peng.hao2@zte.com.cn) Received: from localhost.localdomain.localdomain ([10.74.120.59]) by szsmtp06.zte.com.cn (Lotus Domino Release 8.5.3FP6) with ESMTP id 2018012523244917-2668171 ; Thu, 25 Jan 2018 23:24:49 +0800 From: Peng Hao To: pbonzini@redhat.com, marcandre.lureau@redhat.com Date: Fri, 26 Jan 2018 07:40:04 +0800 Message-Id: <1516923604-101518-1-git-send-email-peng.hao2@zte.com.cn> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on SZSMTP06/server/zte_ltd(Release 8.5.3FP6|November 21, 2013) at 2018-01-25 23:24:49, Serialize by Router on notes_smtp/zte_ltd(Release 9.0.1FP7|August 17, 2016) at 2018-01-25 23:24:28, Serialize complete at 2018-01-25 23:24:28 X-MAIL: mse01.zte.com.cn w0PFOemU085118 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 202.103.147.172 Subject: [Qemu-devel] [PATCH] char-pty: avoid assertion warning X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peng Hao , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" g_source_unref(s->open_source) in pty_chr_timer may trigger a assertion like this: g_source_unref: assertion 'source != NULL' failed. pty_chr_update_read_handler_locked-->pty_chr_state(chr, 0) may be called in pty_chr_timer, pty_chr_state(chr, 0) will call g_source_unref(s->open_source) and set s->open_source=NULL. Signed-off-by: Peng Hao --- chardev/char-pty.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/chardev/char-pty.c b/chardev/char-pty.c index 89315e6..da0f286 100644 --- a/chardev/char-pty.c +++ b/chardev/char-pty.c @@ -58,8 +58,10 @@ static gboolean pty_chr_timer(gpointer opaque) qemu_mutex_lock(&chr->chr_write_lock); s->timer_src = NULL; - g_source_unref(s->open_source); - s->open_source = NULL; + if (s->open_source) { + g_source_unref(s->open_source); + s->open_source = NULL; + } if (!s->connected) { /* Next poll ... */ pty_chr_update_read_handler_locked(chr);