From nobody Sun Feb 8 21:05:54 2026 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=1654782804; cv=none; d=zohomail.com; s=zohoarc; b=c6opCm/bWKsVszJgse/a9gLlFjHthXxOJaSYCdTTv/ssnEWgJDFYFdpjZOumqAjT5v2Tg2UkzNDmEn+McRLmGVoardyJa98kA9DWG+ir33GYu1uptXYybBpYZcyB85Ik45lMSIS8LMDM7Dt28j2QAYp4Cs5LQRk3HnlIQUzaYJc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1654782804; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Hs9m3Fgl44ziRUsmEkJmm3v7HLSj+RDa0VKVWwxcVqA=; b=bj/fgA9Chl14EEdJd2mLSwe7v2KtYMRNlgvhVHnpY+WBFIX+X3mq4b6NS0D+BmJ46ldZiuqTjsfOd57jsWc6sxxhggJL0fzCSRrSYvly9G5+8JdcWoj1FWtFN0gLAMpWR6aIK2BSpBasjD0UhiY2obLFa5CYVhbikL3bg34PpVQ= 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 1654782804286683.6997470131871; Thu, 9 Jun 2022 06:53:24 -0700 (PDT) Received: from localhost ([::1]:34656 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nzIbC-0007od-Rw for importer@patchew.org; Thu, 09 Jun 2022 09:53:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59050) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHFm-0003iK-Ck for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:27:10 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:24936) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHFk-0007lX-OV for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:27:10 -0400 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-232-1c99ByVJNYm_avCG9jj4Mw-1; Thu, 09 Jun 2022 08:27:05 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.rdu2.redhat.com [10.11.54.3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id BED5B804190; Thu, 9 Jun 2022 12:27:04 +0000 (UTC) Received: from localhost (unknown [10.39.193.99]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 78C731121314; Thu, 9 Jun 2022 12:27:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654777628; 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=Hs9m3Fgl44ziRUsmEkJmm3v7HLSj+RDa0VKVWwxcVqA=; b=N9GTncq2o5//EUHA0m+WIY+auHEUCP86PHyjfAyG6/aG4gzOLpwtCCGV1gVT9EUiB9WZKu xyqXx+g4LIIeS4v5GpoxQr25czMQEFFwPO3qKBLhkBfA7xDfyy+hI0Ghf9QPirr83Zxk44 BsbUYqtfAbsClED/pJMiPo0E/LRrFp4= X-MC-Unique: 1c99ByVJNYm_avCG9jj4Mw-1 From: Hanna Reitz To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Reitz , Kevin Wolf , Paolo Bonzini Subject: [PATCH 1/3] qsd: Unlink absolute PID file path Date: Thu, 9 Jun 2022 14:26:59 +0200 Message-Id: <20220609122701.17172-2-hreitz@redhat.com> In-Reply-To: <20220609122701.17172-1-hreitz@redhat.com> References: <20220609122701.17172-1-hreitz@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.3 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.133.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable 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" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1654782806033100001 Content-Type: text/plain; charset="utf-8" After writing the PID file, we register an atexit() handler to unlink it when the process terminates. However, if the process has changed its working directory in the meantime (e.g. in os_setup_post() when daemonizing), this will not work when the PID file path was relative. Therefore, pass the absolute path (created with realpath()) to the unlink() call in the atexit() handler. (realpath() needs a path pointing to an existing file, so we cannot use it before qemu_write_pidfile().) Reproducer: $ cd /tmp $ qemu-storage-daemon --daemonize --pidfile qsd.pid $ file qsd.pid qsd.pid: ASCII text $ kill $(cat qsd.pid) $ file qsd.pid qsd.pid: ASCII text (qsd.pid should be gone after the process has terminated.) Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=3D2092322 Signed-off-by: Hanna Reitz Reviewed-by: Daniel P. Berrang=C3=A9 --- storage-daemon/qemu-storage-daemon.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-sto= rage-daemon.c index c104817cdd..7b8d6cf381 100644 --- a/storage-daemon/qemu-storage-daemon.c +++ b/storage-daemon/qemu-storage-daemon.c @@ -61,6 +61,7 @@ #include "trace/control.h" =20 static const char *pid_file; +static char *pid_file_realpath; static volatile bool exit_requested =3D false; =20 void qemu_system_killed(int signal, pid_t pid) @@ -349,7 +350,7 @@ static void process_options(int argc, char *argv[], boo= l pre_init_pass) =20 static void pid_file_cleanup(void) { - unlink(pid_file); + unlink(pid_file_realpath); } =20 static void pid_file_init(void) @@ -365,6 +366,14 @@ static void pid_file_init(void) exit(EXIT_FAILURE); } =20 + pid_file_realpath =3D g_malloc(PATH_MAX); + if (!realpath(pid_file, pid_file_realpath)) { + error_report("cannot resolve PID file path: %s: %s", + pid_file, strerror(errno)); + unlink(pid_file); + exit(EXIT_FAILURE); + } + atexit(pid_file_cleanup); } =20 --=20 2.35.3 From nobody Sun Feb 8 21:05:54 2026 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=1654783382; cv=none; d=zohomail.com; s=zohoarc; b=aUavEAmj/NC307x+sWfaCOFEqJYMdHCAucNT5poDu7xTzP/PJufDhpczRUS6CNllYJs6SHJwv2bGrOKjA3TGZhP98NDO8RKHT0hO3cK4doFu4LTnlAhLo6glxHH1AdWJAeUhVNNT2ut7Com11LSt558b8mv/auETt9kgDo+/Fcs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1654783382; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=XFzGOGDHGP1h7/oMgEqGUvgVWAwocbgr+2t6Z6eqURA=; b=LmhkQWMLmvFLL9f0g7QEV52vaLB/Uipjz6g7O9HG5xm4UcFh5CUwWmFNlQupZ9w9zCCNb5Pi8dWoMP8WwhvNRiGRDwjTsRIPEMNubwy8LtrgKA/mpyFsxhxVSeAQyETjPev6NfPN14YhnRFsIO6aWgpAKBZt/BxdJgF6sRzaw7o= 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 1654783382371679.6209300558304; Thu, 9 Jun 2022 07:03:02 -0700 (PDT) Received: from localhost ([::1]:48762 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nzIkX-0001BB-0g for importer@patchew.org; Thu, 09 Jun 2022 10:03:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59448) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHGw-0006TM-T3 for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:28:22 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:23048) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHGv-0007tc-FM for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:28:22 -0400 Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-512-WNVnyT1sMwaKfW3njnKcYA-1; Thu, 09 Jun 2022 08:27:06 -0400 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 mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5C9F81C0518B; Thu, 9 Jun 2022 12:27:06 +0000 (UTC) Received: from localhost (unknown [10.39.193.99]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1922218EA6; Thu, 9 Jun 2022 12:27:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654777701; 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=XFzGOGDHGP1h7/oMgEqGUvgVWAwocbgr+2t6Z6eqURA=; b=J5cS44vGybtqny/ejaQRbMlX0Ghb4ib3W7tRiAC3c/WakMJOilrpDjov3x3Q+E9/WFT6G5 kYq+WgcyLxPg+rfo9EQbnph+KNYHSx5bApB5idz0kObfpuWcwhoZhACo3ZV1qsFuxdmSmM WYg7LDRiktEcMFBisA0jhm13rQehCJI= X-MC-Unique: WNVnyT1sMwaKfW3njnKcYA-1 From: Hanna Reitz To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Reitz , Kevin Wolf , Paolo Bonzini Subject: [PATCH 2/3] vl: Conditionally register PID file unlink notifier Date: Thu, 9 Jun 2022 14:27:00 +0200 Message-Id: <20220609122701.17172-3-hreitz@redhat.com> In-Reply-To: <20220609122701.17172-1-hreitz@redhat.com> References: <20220609122701.17172-1-hreitz@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 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.133.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable 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" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1654783383924100001 Content-Type: text/plain; charset="utf-8" Currently, the exit notifier for unlinking the PID file is registered unconditionally. Limit it to only when we actually do create a PID file. Signed-off-by: Hanna Reitz Reviewed-by: Daniel P. Berrang=C3=A9 --- softmmu/vl.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/softmmu/vl.c b/softmmu/vl.c index 4c1e94b00e..f0074845b7 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -1552,9 +1552,7 @@ static Notifier qemu_unlink_pidfile_notifier; =20 static void qemu_unlink_pidfile(Notifier *n, void *data) { - if (pid_file) { - unlink(pid_file); - } + unlink(pid_file); } =20 static const QEMUOption *lookup_opt(int argc, char **argv, @@ -2473,13 +2471,15 @@ static void qemu_maybe_daemonize(const char *pid_fi= le) os_daemonize(); rcu_disable_atfork(); =20 - if (pid_file && !qemu_write_pidfile(pid_file, &err)) { - error_reportf_err(err, "cannot create PID file: "); - exit(1); - } + if (pid_file) { + if (!qemu_write_pidfile(pid_file, &err)) { + error_reportf_err(err, "cannot create PID file: "); + exit(1); + } =20 - qemu_unlink_pidfile_notifier.notify =3D qemu_unlink_pidfile; - qemu_add_exit_notifier(&qemu_unlink_pidfile_notifier); + qemu_unlink_pidfile_notifier.notify =3D qemu_unlink_pidfile; + qemu_add_exit_notifier(&qemu_unlink_pidfile_notifier); + } } =20 static void qemu_init_displays(void) --=20 2.35.3 From nobody Sun Feb 8 21:05:54 2026 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=1654784624; cv=none; d=zohomail.com; s=zohoarc; b=IcRNEJ6klCThT5nZnFl0A62Mm9uuaH2CrYCCnY+rN7lsY/TzIawCJxlKJKuch22BOPzJBJC0Ka2Urv/BHX/dmSTW7ngR9vraNdeVM2eWEmZHr94NEvbqqbIrIDIQ+kAfJMOeDndAshHgZmRGtSz+l3wpqdgGe0bBtASz0lU5dAk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1654784624; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iAWVzsa0z1Sj3mziMZiAUPBnAdjatXfpmaGaZ2ZUy5U=; b=T9PwP+HxK9F+ZyVywxCKnJaysnRFQqn/OJ0B8mrOhBHYqZEggF063Y7DuSpnFJ3U7WRZciFWAwBPrbKPNBucS4pZhtyRztfK63G5Xdvbee8r0gfwRTAD55dANANkVCVBTq7IhUE0f1dREldWA203gRCyCdEV4oKYlKtflLmVC2Q= 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 1654784624710616.161297585177; Thu, 9 Jun 2022 07:23:44 -0700 (PDT) Received: from localhost ([::1]:40402 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nzJ4Z-0004p6-Bo for importer@patchew.org; Thu, 09 Jun 2022 10:23:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59108) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHFq-0003vc-3S for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:27:14 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:25315) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nzHFo-0007mE-FH for qemu-devel@nongnu.org; Thu, 09 Jun 2022 08:27:13 -0400 Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-414-E-21kFDONRmcjUQXdoZpGw-1; Thu, 09 Jun 2022 08:27:08 -0400 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 5A1A9803B22; Thu, 9 Jun 2022 12:27:08 +0000 (UTC) Received: from localhost (unknown [10.39.193.99]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1616B2166B26; Thu, 9 Jun 2022 12:27:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1654777631; 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=iAWVzsa0z1Sj3mziMZiAUPBnAdjatXfpmaGaZ2ZUy5U=; b=QqYL4hfd1s+7kyd3xABSatOuiTvA1VV8rV+Pu4wiRIB3xIk9DtdNbhpICdq/Mp+4Y4Eu+e hsj75UhBTWMSOZlxiwmuiWwpM7Ltwmgj5aDUj6qzFgbDQ8I0HXkkIU60pgbrUJ68BBT4Xo 6tAct0f4hVF/VP3b5/pKuVcUJydxliY= X-MC-Unique: E-21kFDONRmcjUQXdoZpGw-1 From: Hanna Reitz To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, Hanna Reitz , Kevin Wolf , Paolo Bonzini Subject: [PATCH 3/3] vl: Unlink absolute PID file path Date: Thu, 9 Jun 2022 14:27:01 +0200 Message-Id: <20220609122701.17172-4-hreitz@redhat.com> In-Reply-To: <20220609122701.17172-1-hreitz@redhat.com> References: <20220609122701.17172-1-hreitz@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.78 on 10.11.54.6 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.133.124; envelope-from=hreitz@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -21 X-Spam_score: -2.2 X-Spam_bar: -- X-Spam_report: (-2.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.082, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable 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" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1654784625849100001 Content-Type: text/plain; charset="utf-8" After writing the PID file, we register an exit notifier to unlink it when the process terminates. However, if the process has changed its working directory in the meantime (e.g. in os_setup_post() when daemonizing), this will not work when the PID file path was relative. Therefore, pass the absolute path (created with realpath()) to the unlink() call in the exit notifier. (realpath() needs a path pointing to an existing file, so we cannot use it before qemu_write_pidfile().) Reproducer: $ cd /tmp $ qemu-system-x86_64 --daemonize --pidfile qemu.pid $ file qemu.pid qemu.pid: ASCII text $ kill $(cat qemu.pid) $ file qemu.pid qemu.pid: ASCII text (qemu.pid should be gone after the process has terminated.) Signed-off-by: Hanna Reitz Reviewed-by: Daniel P. Berrang=C3=A9 --- softmmu/vl.c | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/softmmu/vl.c b/softmmu/vl.c index f0074845b7..a97af525d1 100644 --- a/softmmu/vl.c +++ b/softmmu/vl.c @@ -1548,11 +1548,18 @@ machine_parse_property_opt(QemuOptsList *opts_list,= const char *propname, } =20 static const char *pid_file; -static Notifier qemu_unlink_pidfile_notifier; +struct UnlinkPidfileNotifier { + Notifier notifier; + char *pid_file_realpath; +}; +static struct UnlinkPidfileNotifier qemu_unlink_pidfile_notifier; =20 static void qemu_unlink_pidfile(Notifier *n, void *data) { - unlink(pid_file); + struct UnlinkPidfileNotifier *upn; + + upn =3D DO_UPCAST(struct UnlinkPidfileNotifier, notifier, n); + unlink(upn->pid_file_realpath); } =20 static const QEMUOption *lookup_opt(int argc, char **argv, @@ -2472,13 +2479,28 @@ static void qemu_maybe_daemonize(const char *pid_fi= le) rcu_disable_atfork(); =20 if (pid_file) { + char *pid_file_realpath =3D NULL; + if (!qemu_write_pidfile(pid_file, &err)) { error_reportf_err(err, "cannot create PID file: "); exit(1); } =20 - qemu_unlink_pidfile_notifier.notify =3D qemu_unlink_pidfile; - qemu_add_exit_notifier(&qemu_unlink_pidfile_notifier); + pid_file_realpath =3D g_malloc0(PATH_MAX); + if (!realpath(pid_file, pid_file_realpath)) { + error_report("cannot resolve PID file path: %s: %s", + pid_file, strerror(errno)); + unlink(pid_file); + exit(1); + } + + qemu_unlink_pidfile_notifier =3D (struct UnlinkPidfileNotifier) { + .notifier =3D { + .notify =3D qemu_unlink_pidfile, + }, + .pid_file_realpath =3D pid_file_realpath, + }; + qemu_add_exit_notifier(&qemu_unlink_pidfile_notifier.notifier); } } =20 --=20 2.35.3