From nobody Wed Dec 17 05:30:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1733415602; cv=none; d=zohomail.com; s=zohoarc; b=ZbX8+IkubSJVuXm8i3xW6JwvVvLm6UR2skgFrjpA3WsZznE7tghAh0jFOTy4nRm4NkD8ojmeuYGc7dPsaDREsyzVZlcnWRciUIt/D4F/MgVCVIyqBxmgPqUnDn1o4nz0H3MKdIFz7XZeaOEzaY8rtq+Zf4xvgscEtcjaaT4dTgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1733415602; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Jys/UjC3t3F8O2tUXCN6gwtKZacN/DR36JEOmhwiITk=; b=YTmMdU3cZu4NhmjD6qh7rskcDGi2A9loXbQNlk9jITQg2fbtaHY+Rir+5Bsk8VLNwQL4smZXoR9L/OfYlEMkRxzgZkohKf/kkOyUurVpCkauCrfhq7C9NfphYV4RMm32ALjltJSVHMK14eKwaGujqam/OOtOTUjUzQZQUGByLok= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1733415602277619.1889516268529; Thu, 5 Dec 2024 08:20:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tJEZZ-0004WJ-TD; Thu, 05 Dec 2024 11:19:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZQ-0004Vv-T9 for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:16 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZP-0007nh-Gq for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:16 -0500 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-681-SBG3pESnMoWAnc4YJ3um_g-1; Thu, 05 Dec 2024 11:19:11 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B09D619560A5; Thu, 5 Dec 2024 16:19:10 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 292AD3000197; Thu, 5 Dec 2024 16:19:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733415554; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Jys/UjC3t3F8O2tUXCN6gwtKZacN/DR36JEOmhwiITk=; b=FixyvquCM5izeeFy/nCxVBdamIijTlP+lne7CWFiEv2xcY46SkFVVEdU3jbXYOxqHXbmA2 8XLSAetzLOdZUfQOlArfX+Q3qNCyIj2szV74fxox0ojxDquaq49MugJ5YAd8S/lkBySi3Q oyXoxFk2xZ2sITE/Od9zIJ1nfdtCIn4= X-MC-Unique: SBG3pESnMoWAnc4YJ3um_g-1 X-Mimecast-MFC-AGG-ID: SBG3pESnMoWAnc4YJ3um_g From: Michal Privoznik To: qemu-devel@nongnu.org Cc: kkostiuk@redhat.com, michael.roth@amd.com, jtomko@redhat.com Subject: [PATCH v2 1/4] qga: Don't access global variable in run_agent_once() Date: Thu, 5 Dec 2024 17:18:45 +0100 Message-ID: <8ae7f5d5032b14a5b956fe8aaf47bae5ca401699.1733414906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.996, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1733415602982116600 The run_agent_once() function is already given GAState via an argument. There's no need to access the global ga_state variable which points to the argument anyways (thanks to initialize_agent()). Worse, some parts of the function use the argument and the other use the global variable. Stick with the function argument. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko Reviewed-by: Konstantin Kostiuk --- qga/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qga/main.c b/qga/main.c index 50186760bf..4a695235f0 100644 --- a/qga/main.c +++ b/qga/main.c @@ -1519,7 +1519,7 @@ static int run_agent_once(GAState *s) return EXIT_FAILURE; } =20 - g_main_loop_run(ga_state->main_loop); + g_main_loop_run(s->main_loop); =20 if (s->channel) { ga_channel_free(s->channel); --=20 2.45.2 From nobody Wed Dec 17 05:30:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1733415579; cv=none; d=zohomail.com; s=zohoarc; b=P+c7czqc5t6ZpRsWpENPBIIARA2sKMG+lFJlhRPgqaXyjNxQZb/aZWVNCo5b8+c4pU/3KuLgyO/HflJp9c3u0ESfz63wTYADPafhyMvI2R/UB18SJogZGWZAwWuvc/9sxW8OKL4gKuLxxfnkrO7CNxI0Y38W66n91YG58zeFmh0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1733415579; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=v7fSVaL4A+NJUb5Qfu7/DO8n7m7CrRilZSxiNE2PvZg=; b=Yp6aVcAA3I35w75TyPFDbQXTPmoEzUthsmqoDsaMPxglwwX5hAjrz3fXyb6uxkA53BSVqim1gL+L/9p+gzBHf6zNc6QvRbG3nQCLylJvBhFGV7Gv03T0fbNMKYHmtDXfUzBQH8tvtFvV03rGeqi2S22kD5xRObZf3ejvccWjtiQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1733415579669577.1131397538167; Thu, 5 Dec 2024 08:19:39 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tJEZZ-0004WK-TW; Thu, 05 Dec 2024 11:19:27 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZR-0004Vw-30 for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:17 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZP-0007nj-Hx for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:16 -0500 Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-311-AX5DPnzXP12EAsDLnDXHtg-1; Thu, 05 Dec 2024 11:19:13 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id CA80219560A3; Thu, 5 Dec 2024 16:19:12 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 528DC3000197; Thu, 5 Dec 2024 16:19:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733415554; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=v7fSVaL4A+NJUb5Qfu7/DO8n7m7CrRilZSxiNE2PvZg=; b=SqxEJReJ0qFRBeWmAHTaZEvX7ULt3ajZEN+DcSm2n3o/R0H879cwZHp5hpy7aCDOv+7Lqw 1x7Ka+5YwPSmtNonsb5OsqxR6aZvS6xcFAOR3DhuT4SxsmykKtx91RJl9tDomDmeqDUVhD fmhBU0TRFfBVKDXsdpJ6n6QRljvpOFA= X-MC-Unique: AX5DPnzXP12EAsDLnDXHtg-1 X-Mimecast-MFC-AGG-ID: AX5DPnzXP12EAsDLnDXHtg From: Michal Privoznik To: qemu-devel@nongnu.org Cc: kkostiuk@redhat.com, michael.roth@amd.com, jtomko@redhat.com Subject: [PATCH v2 2/4] qga: Invert logic on return value in main() Date: Thu, 5 Dec 2024 17:18:46 +0100 Message-ID: <9316535a7cd0e73983b57c2c775d6bfc566d4b08.1733414906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.996, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1733415585009116600 Current logic on return value ('ret' variable) in main() is error prone. The variable is initialized to EXIT_SUCCESS and then set to EXIT_FAILURE on error paths. This makes it very easy to forget to set the variable to indicate error when adding new error path, as is demonstrated by handling of initialize_agent() failure. It's simply lacking setting of the variable. There's just one case where success should be indicated: when dumping the config ('-D' cmd line argument). To resolve this, initialize the variable to failure value and set it explicitly to success value in that one specific case. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- qga/main.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/qga/main.c b/qga/main.c index 4a695235f0..68ea7f275a 100644 --- a/qga/main.c +++ b/qga/main.c @@ -1579,7 +1579,7 @@ static void stop_agent(GAState *s, bool requested) =20 int main(int argc, char **argv) { - int ret =3D EXIT_SUCCESS; + int ret =3D EXIT_FAILURE; GAState *s; GAConfig *config =3D g_new0(GAConfig, 1); int socket_activation; @@ -1607,7 +1607,6 @@ int main(int argc, char **argv) socket_activation =3D check_socket_activation(); if (socket_activation > 1) { g_critical("qemu-ga only supports listening on one socket"); - ret =3D EXIT_FAILURE; goto end; } if (socket_activation) { @@ -1631,7 +1630,6 @@ int main(int argc, char **argv) =20 if (!config->method) { g_critical("unsupported listen fd type"); - ret =3D EXIT_FAILURE; goto end; } } else if (config->channel_path =3D=3D NULL) { @@ -1643,13 +1641,13 @@ int main(int argc, char **argv) config->channel_path =3D g_strdup(QGA_SERIAL_PATH_DEFAULT); } else { g_critical("must specify a path for this channel"); - ret =3D EXIT_FAILURE; goto end; } } =20 if (config->dumpconf) { config_dump(config); + ret =3D EXIT_SUCCESS; goto end; } =20 @@ -1664,6 +1662,7 @@ int main(int argc, char **argv) SERVICE_TABLE_ENTRY service_table[] =3D { { (char *)QGA_SERVICE_NAME, service_main }, { NULL, NULL } }; StartServiceCtrlDispatcher(service_table); + ret =3D EXIT_SUCCESS; } else { ret =3D run_agent(s); } --=20 2.45.2 From nobody Wed Dec 17 05:30:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1733415674; cv=none; d=zohomail.com; s=zohoarc; b=dchhmkE9pzn1YB+vSPOkILiQDBcoL26lsI5gNrgm4VFh7tPK1nC+aJ1U9IQDVpohnw9iIxB+sDHkqyxt2nuSW9LKtrfnPkmDLSk/WCV+0Ff3B2OW7PLm7xhNW0oN9gzrZXiZco8VEhi7XXNw4bdp4zJe+9JbXVUW0mOQfH7SeQw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1733415674; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ykVXfQSv6QdQnvZoPkKQ+tHuBLJ6v9t5jGthxZwquzY=; b=Om5YFkZlkuEmuRJjaW/nXKaaSLQRR1WoPg9Gcdzz+eztoKzTV02Pgzk1P9A0VVIIB6ul8mFQbcoWu0V7oTchEN3KRRor02fW7YSFlE+fcwGwb/jC3OR3PaTzOaimi51HYadpU4WFgnWCPwf0F2S65ZUUGhAFkFS6W5uCnaBs1Tw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1733415674214363.17725254293987; Thu, 5 Dec 2024 08:21:14 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tJEbE-0006vP-Dp; Thu, 05 Dec 2024 11:21:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEbC-0006v1-B5 for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:21:06 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEb9-0008D1-Pf for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:21:05 -0500 Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-216-nrjgre8sNzCBSJky7MUj0g-1; Thu, 05 Dec 2024 11:19:16 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 8F9C5195608A; Thu, 5 Dec 2024 16:19:15 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 313023000197; Thu, 5 Dec 2024 16:19:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733415662; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ykVXfQSv6QdQnvZoPkKQ+tHuBLJ6v9t5jGthxZwquzY=; b=dvlDOITpocLNWl9OlQ7vt4MVTthwejSVELew1dUu2Y4qNIPZBPx7ETRHrTMD3btMXKnR0a MrHwAvQjQVIUw4SSUUvY5M7TmrmQrM9InjHtdNaexT0+EnOWOoujzK69M7gN0Ib0VtP0o8 diqNFj4wZJCITjQrZyIXb6a7uVpjfgw= X-MC-Unique: nrjgre8sNzCBSJky7MUj0g-1 X-Mimecast-MFC-AGG-ID: nrjgre8sNzCBSJky7MUj0g From: Michal Privoznik To: qemu-devel@nongnu.org Cc: kkostiuk@redhat.com, michael.roth@amd.com, jtomko@redhat.com Subject: [PATCH v2 3/4] qga: Don't daemonize before channel is initialized Date: Thu, 5 Dec 2024 17:18:47 +0100 Message-ID: <45717b2498a83e91479a57be7832c3868ac9d135.1733414906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.996, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1733415675553116600 If the agent is set to daemonize but for whatever reason fails to init the channel, the error message is lost. Worse, the agent daemonizes needlessly and returns success. For instance: # qemu-ga -m virtio-serial \ -p /dev/nonexistent_device \ -f /run/qemu-ga.pid \ -t /run \ -d # echo $? 0 This makes it needlessly hard for init scripts to detect a failure in qemu-ga startup. Though, they shouldn't pass '-d' in the first place. Let's open the channel first and only after that become a daemon. Related bug: https://bugs.gentoo.org/810628 Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- qga/main.c | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/qga/main.c b/qga/main.c index 68ea7f275a..35f061b5ea 100644 --- a/qga/main.c +++ b/qga/main.c @@ -1430,7 +1430,6 @@ static GAState *initialize_agent(GAConfig *config, in= t socket_activation) if (config->daemonize) { /* delay opening/locking of pidfile till filesystems are unfro= zen */ s->deferred_options.pid_filepath =3D config->pid_filepath; - become_daemon(NULL); } if (config->log_filepath) { /* delay opening the log file till filesystems are unfrozen */ @@ -1438,9 +1437,6 @@ static GAState *initialize_agent(GAConfig *config, in= t socket_activation) } ga_disable_logging(s); } else { - if (config->daemonize) { - become_daemon(config->pid_filepath); - } if (config->log_filepath) { FILE *log_file =3D ga_open_logfile(config->log_filepath); if (!log_file) { @@ -1487,6 +1483,20 @@ static GAState *initialize_agent(GAConfig *config, i= nt socket_activation) =20 ga_apply_command_filters(s); =20 + if (!channel_init(s, s->config->method, s->config->channel_path, + s->socket_activation ? FIRST_SOCKET_ACTIVATION_FD : = -1)) { + g_critical("failed to initialize guest agent channel"); + return NULL; + } + + if (config->daemonize) { + if (ga_is_frozen(s)) { + become_daemon(NULL); + } else { + become_daemon(config->pid_filepath); + } + } + ga_state =3D s; return s; } @@ -1513,8 +1523,9 @@ static void cleanup_agent(GAState *s) =20 static int run_agent_once(GAState *s) { - if (!channel_init(s, s->config->method, s->config->channel_path, - s->socket_activation ? FIRST_SOCKET_ACTIVATION_FD : = -1)) { + if (!s->channel && + channel_init(s, s->config->method, s->config->channel_path, + s->socket_activation ? FIRST_SOCKET_ACTIVATION_FD : -= 1)) { g_critical("failed to initialize guest agent channel"); return EXIT_FAILURE; } @@ -1523,6 +1534,7 @@ static int run_agent_once(GAState *s) =20 if (s->channel) { ga_channel_free(s->channel); + s->channel =3D NULL; } =20 return EXIT_SUCCESS; --=20 2.45.2 From nobody Wed Dec 17 05:30:20 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1733415601; cv=none; d=zohomail.com; s=zohoarc; b=m3XO2bnYrjssNZs5NThNqJPupef2a5Trz0FiBsRUEAOw8YO0K5P/0goAl8N16+RHqKEbCBoPwUAYgdJ5y+KtFEg16laOhJjImnXUoHFum/xYoW3rlUykd6VzXD/dKW4f99E0vAtjszGM8Z4ih3cnG/PVlIaYWpideGk1Ui8A2Iw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1733415601; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=xG8LQleyZaEfHMBwq60MdqrgLxtBGgS3uFbJQoWRKmI=; b=KUwPWykmXnxjCeWSPrmo5awBFc80nWc7pw5k3Iv7sgHMP74qD4Y0piM8gZembW1PX3z3xFJlh+Buz7Ff5RaFkW4nA9+6OFw5MxKGHBERFVtv1scGbByLUq7/t3sqpFNWAa3MK8VSL/nFkp5CwOIPeqS8XUjhIeFQAWM5TQoM1rU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1733415601112542.3205281061369; Thu, 5 Dec 2024 08:20:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tJEZp-0004fH-39; Thu, 05 Dec 2024 11:19:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZg-0004bL-KW for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:33 -0500 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tJEZb-0007oT-Pw for qemu-devel@nongnu.org; Thu, 05 Dec 2024 11:19:32 -0500 Received: from mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-479-5fCWULkJMCi4GVh-xlRPuA-1; Thu, 05 Dec 2024 11:19:18 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-04.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 82D261955F3C; Thu, 5 Dec 2024 16:19:17 +0000 (UTC) Received: from moe.brq.redhat.com (unknown [10.43.3.236]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 05B9F3000197; Thu, 5 Dec 2024 16:19:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1733415559; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=xG8LQleyZaEfHMBwq60MdqrgLxtBGgS3uFbJQoWRKmI=; b=PlK5xppuM1LRtrcsCHwc214AUrvsA9Lcp8TKEknf05L/hwFg53HtrZO3vKXL6pfBxcimVu K9Hv4R3eAb/cNRWHv0suOaVm2CUVzuq4QSnFCRkHO5rrQavR3H9fNx/IS1lSRXRJfUmXoE iZeNjvDn8bCGBuFFUzwlg5DfOsuHq44= X-MC-Unique: 5fCWULkJMCi4GVh-xlRPuA-1 X-Mimecast-MFC-AGG-ID: 5fCWULkJMCi4GVh-xlRPuA From: Michal Privoznik To: qemu-devel@nongnu.org Cc: kkostiuk@redhat.com, michael.roth@amd.com, jtomko@redhat.com Subject: [PATCH v2 4/4] qga: Make run_agent() and run_agent_once() return no value Date: Thu, 5 Dec 2024 17:18:48 +0100 Message-ID: <8f4469febaaf5c48afdf13a6c88e959956c0f204.1733414906.git.mprivozn@redhat.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -50 X-Spam_score: -5.1 X-Spam_bar: ----- X-Spam_report: (-5.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-2.996, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1733415603041116600 After previous commits, run_agent_once() can't return anything else but EXIT_SUCCESS. Transitionally, run_agent() can't return anything else but EXIT_SUCCESS too. There's not much value in having these function return an integer. Make them return void. Signed-off-by: Michal Privoznik Reviewed-by: J=C3=A1n Tomko --- qga/main.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/qga/main.c b/qga/main.c index 35f061b5ea..346274f114 100644 --- a/qga/main.c +++ b/qga/main.c @@ -145,7 +145,7 @@ DWORD WINAPI service_ctrl_handler(DWORD ctrl, DWORD typ= e, LPVOID data, DWORD WINAPI handle_serial_device_events(DWORD type, LPVOID data); VOID WINAPI service_main(DWORD argc, TCHAR *argv[]); #endif -static int run_agent(GAState *s); +static void run_agent(GAState *s); static void stop_agent(GAState *s, bool requested); =20 static void @@ -1521,7 +1521,7 @@ static void cleanup_agent(GAState *s) ga_state =3D NULL; } =20 -static int run_agent_once(GAState *s) +static void run_agent_once(GAState *s) { if (!s->channel && channel_init(s, s->config->method, s->config->channel_path, @@ -1536,8 +1536,6 @@ static int run_agent_once(GAState *s) ga_channel_free(s->channel); s->channel =3D NULL; } - - return EXIT_SUCCESS; } =20 static void wait_for_channel_availability(GAState *s) @@ -1561,21 +1559,17 @@ static void wait_for_channel_availability(GAState *= s) #endif } =20 -static int run_agent(GAState *s) +static void run_agent(GAState *s) { - int ret =3D EXIT_SUCCESS; - s->force_exit =3D false; =20 do { - ret =3D run_agent_once(s); + run_agent_once(s); if (s->config->retry_path && !s->force_exit) { g_warning("agent stopped unexpectedly, restarting..."); wait_for_channel_availability(s); } } while (s->config->retry_path && !s->force_exit); - - return ret; } =20 static void stop_agent(GAState *s, bool requested) @@ -1674,14 +1668,15 @@ int main(int argc, char **argv) SERVICE_TABLE_ENTRY service_table[] =3D { { (char *)QGA_SERVICE_NAME, service_main }, { NULL, NULL } }; StartServiceCtrlDispatcher(service_table); - ret =3D EXIT_SUCCESS; } else { - ret =3D run_agent(s); + run_agent(s); } #else - ret =3D run_agent(s); + run_agent(s); #endif =20 + ret =3D EXIT_SUCCESS; + cleanup_agent(s); =20 end: --=20 2.45.2