From patchwork Thu Apr 7 11:22:13 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Pudgorodskiy X-Patchwork-Id: 607397 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3qgkbZ0P1cz9t62 for ; Thu, 7 Apr 2016 23:54:18 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b=EwRWljzP; dkim-atps=neutral Received: from localhost ([::1]:49913 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aoAO0-0003Q1-8C for incoming@patchwork.ozlabs.org; Thu, 07 Apr 2016 09:54:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aoANb-00036B-QS for qemu-devel@nongnu.org; Thu, 07 Apr 2016 09:53:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aoANV-0000SQ-M1 for qemu-devel@nongnu.org; Thu, 07 Apr 2016 09:53:51 -0400 Received: from mail-am1on0109.outbound.protection.outlook.com ([157.56.112.109]:6982 helo=emea01-am1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aoANV-0000SD-2f for qemu-devel@nongnu.org; Thu, 07 Apr 2016 09:53:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=D0zu1Qxi1RgnVgEVkPtnA3u2mlgHLlSxqkwjhZEXj8Q=; b=EwRWljzPenbekcocKUm4QFykmq+zyGm2eRYkCkn4dThT4FbSyJPwIJq5imM8OirXjfblpN+xFjxOAUyOoC2ks0J3rcx2nAbpF9OhUXIf+glDB7XT6DR431M9xIMYJ7P7UvecfitizcuMc+D7nLr3kCmD1KphS6ET438b4NQZgpw= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none; nongnu.org; dmarc=none action=none header.from=virtuozzo.com; Received: from [10.24.38.132] (195.214.232.10) by VI1PR08MB0400.eurprd08.prod.outlook.com (10.162.12.19) with Microsoft SMTP Server (TLS) id 15.1.447.15; Thu, 7 Apr 2016 11:22:21 +0000 To: Michael Roth , "Denis V. Lunev" , References: <1459921411-20723-1-git-send-email-den@openvz.org> <1459921411-20723-2-git-send-email-den@openvz.org> <20160406235350.14380.72767@loki> From: Yuriy Pudgorodskiy Message-ID: <570642E5.2020609@virtuozzo.com> Date: Thu, 7 Apr 2016 14:22:13 +0300 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: <20160406235350.14380.72767@loki> X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: AM3PR07CA0020.eurprd07.prod.outlook.com (10.141.45.148) To VI1PR08MB0400.eurprd08.prod.outlook.com (10.162.12.19) X-MS-Office365-Filtering-Correlation-Id: 9c40e900-5120-46e0-3ef4-08d35ed6e36d X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0400; 2:ULkTSB4pfjYZtRst+zquTaVkp2TjMI1XjzP9cm5nOqtiG9cJnJKozY7Evt49h+TvhGr4VK56txqi+Xq3f1gk+xFlTTS4N7q0MiXONqRm/ULA5qh9Kt5M/4mOSfww9U6ZtY2NQ03yDEhHZ6+tJk0R+S2w8AC6mgkNxf8vcStXXQJJV+09zbbjeUVkzZd55BnA; 3:tfZ7S96ZUjQF9qFeqXCtc7AX2xOrM7PJ6uk11vTIdusTKHRGXeNVfgqKOGcbB8B23uOHXchX3QBHHGyw90WHLYYh8yzW2Hibv7Qo8ZffQYwxyGzvSPh9VrzJwKPI+/Fv; 25:JpBoBpLl9jksZ0JRW3zZSRgGJMzPi1LHkrXVQgJ0aUAj94TPMW7SfT8O/SGrCFcYJdanowl8r7nnjQOqKw+TxBDzvlDv3vMJ6vlmMvvTg5M4DV7O4j7mRztZFywlK5/ra+8agRKZAz8SuqUhxXqkiNGEdSAYLMpY7W7YoSuhqjvVcJegbegJ9t8mdedicuHijMuDRE5ISIBj1isF023sHqM97JP2JBqxxX8gSimTKoECuN0YtS+BveIfFeagG++paY62CKrXSzKM5CS0jxWZLbFfgVGn3j+XLxE+sqYY7HDenbkyK6CWtSpwp/Js23kLF1T0k3+G90uffOoUPUtEKg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR08MB0400; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040074)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041046)(6043046); SRVR:VI1PR08MB0400; BCL:0; PCL:0; RULEID:; SRVR:VI1PR08MB0400; X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0400; 4:DtIrsNWPNyHnoaXTvvhazlUEGkY0+yF0fDWHkknCbBZYeWln0V+PyV2y7F5GD/1nMrYmvNUhi8XL7d1WAvAVFkald/cBE+wGrbSp+0Y3ThSR33HVqWJO0aROXQY2TxZsOLgNDtoMcb1iVsmJxTvdbUg4DNrg/6GlB5s40YrD5PI+F3inltCqTWwgpFGP4+tYbavjJcXh3PxwieWM/EHhnQZNF8Z/hqqwomoCsTr9FI/2KzycyJ2qFzEsifiWF4/d+ZBv6d/VY+Er7ua43phvxxu/nEwhFGMn++GNJDwZYBIi9NPPngIL/RQ/KdQth+DTZzZBV7O5S9o7EbOw89Ygo7+9nVTBQjRACWlehKvECsYMT+c6EKeNn5TnepRFS412JhmThG3F6R0tFDNF4yqJEv+oUPKminXn1HDGMS1MW+4= X-Forefront-PRVS: 0905A6B2C7 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6049001)(6009001)(24454002)(377424004)(377454003)(6116002)(586003)(65956001)(230700001)(3846002)(19580405001)(1096002)(50466002)(33656002)(81166005)(76176999)(65816999)(2906002)(50986999)(86362001)(87266999)(65806001)(92566002)(42186005)(54356999)(189998001)(77096005)(66066001)(107886002)(5001770100001)(36756003)(2950100001)(4001350100001)(83506001)(47776003)(23676002)(19580395003)(5008740100001)(80316001)(42262002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR08MB0400; H:[10.24.38.132]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtWSTFQUjA4TUIwNDAwOzIzOk9wTktzUzdmZVdRSUVKVjR2VTF4OGRUN2xF?= =?utf-8?B?Kzhsc0RWUWw0Q3U3SE5PWDFncXZiSlRHRGwyeVZzRitzc2EwUDJHTWlIaHBp?= =?utf-8?B?QmNueTdRWWhqbER0NkRrMGRoL1JyZXVvVlR4ZUlGWVVBT2FtVVQ0VDR2SmFp?= =?utf-8?B?Z3JDUCtUTWcrSjAxTGFYR2ZNVUVSY0xIb1VyajhnZjhldXM1UjBDMGpNRG1K?= =?utf-8?B?RklCWmxTWW9uQmU1ckViSW5VMlBJcDdLSlY3cWwvRzNyK0RveUM0cmVkSHRI?= =?utf-8?B?RVJpR2VxcXhvUzd0S0Y5TkxnOUdHaDNkcWJyVmF3SG4zUkxDam1SM3BWMkEx?= =?utf-8?B?TE9INmJaUG9RbDFmcW9scGFhWXp0VG1LUWd4OXlidzdoZ2FsZERjUlhaK1JI?= =?utf-8?B?NzVSSStGNzNzdGJpZ2F3WHFVUmZiczRDV0RvSUc1UHYvOU9JZUExVjlaRWUy?= =?utf-8?B?anRtYXdCeHRZQ05yMkVsUjhOQlVoMGlmYnA3aXdxUjV3Rm5FU1IvRDFCcFBz?= =?utf-8?B?M08xcmdnNy9Ncnc0cUYwLzRIM0RxQ2sxZ1V3NTdZYUdDMVdrU21NdFl5L0c4?= =?utf-8?B?dXBCMG9RaEtPdWJkbG9scDBqUkhRSjdyTG1DYVZ5NW02SG9tcHBXVnkzc2Mx?= =?utf-8?B?WFBQN1ltKzJvbGtXZVlUenI3VG1HckJ1TmVoNktqcFNOSXRSUUpBQVdwb2R4?= =?utf-8?B?MVZUdEdpRVpmaTNxMXliVDFya0Q0K3VqWkMyUW55QVh0VENuc1lydmpLekds?= =?utf-8?B?VTZaWWdaMmp6bDJoMmw1czBXOUhPYmdSNzNITWYzd3J3Q2ZNK3FSZjljbFdM?= =?utf-8?B?Sk5XK2NNTk1rQmJOZ0JQRFpkQ29Hb0xNY2YxSnZZT0piamR5MEs0dHg2cEpX?= =?utf-8?B?YmpwMFNFNGFCdDF2ejUwSnZMN1F2VkhvZWNvc3YrMWFuZlE1Y093OS9LUko4?= =?utf-8?B?TEU2YWNpbFhxUTJEc0VSRWIyNVhxYWMxMnB1aWVXb2RNV1RleWFiTVVDOTls?= =?utf-8?B?OFpDYlNUNjdoTHd0ZHFvYnVvcTN2RExxVk9ZUXFIZ1J4L1lSNFA3MFFUWExY?= =?utf-8?B?bG83b1VOMXJ0Z1BiVFhoajRLY2FBK3gxRXhJRnFLWXE5aHR3dVJyUHZoUHJk?= =?utf-8?B?eG1xekhaU1FGMzd1dEVoalpBVTNFUFpHbVg4S2xsb3dHV2NOUzg5R1FKYlZw?= =?utf-8?B?UHpUTEJkcWY5enJ4UlVZK3M2UkJZQVllYUFVb2NUVUN1YnpSSG0yb1RpcnhY?= =?utf-8?B?MnJ2VnNpdDNsd1RVTmI3c21VTU1IY2ZMUDd0Q25laWVVQUVsQ3FUbnowRGdY?= =?utf-8?B?MWNNMXZrQnM2WnUzaFY0QnRHSmxmei9jN2tmcUxHUmZlT3JjOWZtRDE0eUs4?= =?utf-8?B?cjBDR0xqUzE4N3FtWUY2RTVoTkNTK3laU3dkUFFXbkdZZEdYRzhmUThWQ0pZ?= =?utf-8?B?NDJHak13WCtwck1wRG9ZWnhCbC9QU0M4RG96aUlBaDNqNzBaT1VJamJpcEZJ?= =?utf-8?B?Sk9ndz09?= X-Microsoft-Exchange-Diagnostics: 1; VI1PR08MB0400; 5:KU07BExEiJAFUubCs6w4VAS8dlzLRWgQFd9I91LVOY4t0caQtXLLJ20Gm91iKW9s398mBr/9DeEt3hTssfNz0fxq7E2iBqg0LJ+BMywca7d9o6GeZXRgfMUwCQkI6SCMjzFDgEY8okzrieoE4B9BxA==; 24:luU8tDLpN+LW6xSc7OL93kir0tPvTGUty2z1lA/qEt12ZimPEznvL6wkUZd4U43wn089B0A/Mqc7Izywkk0wHBtcRm21vPlGtbLrIKj5wyE=; 20:dDJQ9POITbvxv1wY3PIYQTOiegDGGnnzAsOjZ4xCB3/HUfwKUfRXvzIJSzZYTbKDrTT9GvYaulawq4CY+uVjv2FyHP434slW2dehvtOySKuiNNCD3lYxTX6S04tDwtbYcKqJKu5eXeEwrzBjNN8sLPDJYBWBm/ahY64E4IIPYl4= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Apr 2016 11:22:21.4565 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0400 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 157.56.112.109 Subject: Re: [Qemu-devel] [PATCH 1/2] qga: fix fd leak with guest-exec i/o channels X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org On 4/7/2016 2:53 AM, Michael Roth wrote: > Quoting Denis V. Lunev (2016-04-06 00:43:30) >> From: Yuriy Pudgorodskiy >> >> Signed-off-by: Yuriy Pudgorodskiy >> Signed-off-by: Denis V. Lunev >> CC: Michael Roth >> --- >> qga/commands.c | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/qga/commands.c b/qga/commands.c >> index e091ee1..9ad2f7d 100644 >> --- a/qga/commands.c >> +++ b/qga/commands.c >> @@ -446,6 +446,7 @@ GuestExec *qmp_guest_exec(const char *path, >> g_io_channel_set_encoding(in_ch, NULL, NULL); >> g_io_channel_set_buffered(in_ch, false); >> g_io_channel_set_flags(in_ch, G_IO_FLAG_NONBLOCK, NULL); >> + g_io_channel_set_close_on_unref(in_ch, true); >> g_io_add_watch(in_ch, G_IO_OUT, guest_exec_input_watch, &gei->in); >> } >> >> @@ -461,6 +462,8 @@ GuestExec *qmp_guest_exec(const char *path, >> g_io_channel_set_encoding(err_ch, NULL, NULL); >> g_io_channel_set_buffered(out_ch, false); >> g_io_channel_set_buffered(err_ch, false); >> + g_io_channel_set_close_on_unref(out_ch, true); >> + g_io_channel_set_close_on_unref(err_ch, true); > I don't seem any harm in adding these for safety, but don't the handles > get closed via the g_io_channel_shutdown(ch, ...) calls we make prior to > unref in guest_exec_{output,input}_watch()? Or is there another unref > path I'm missing? > Well, it may be fixed with explicit g_io_channel_shutdown(), and may be it is a better fix style, but it needs to be fixed somehow. We missed in our code a call to shutdown in guest_exec_output_watch(): >> g_io_add_watch(out_ch, G_IO_IN | G_IO_HUP, >> guest_exec_output_watch, &gei->out); >> g_io_add_watch(err_ch, G_IO_IN | G_IO_HUP, >> -- >> 2.1.4 >> > . > diff --git a/qga/commands.c b/qga/commands.c index 45688c8..9acb2f6 100644 --- a/qga/commands.c +++ b/qga/commands.c @@ -373,6 +373,7 @@ static gboolean guest_exec_output_watch(GIOChannel *ch, return true; close: + g_io_channel_shutdown(ch, true, NULL); g_io_channel_unref(ch); g_atomic_int_set(&p->closed, 1); return false;