From nobody Thu Nov 13 03:18:54 2025 Delivered-To: importer@patchew.org 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; Authentication-Results: mx.zohomail.com; dkim=fail; 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=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1576317550; cv=none; d=zohomail.com; s=zohoarc; b=hSaEqoAR3AYr/aJ3sW1uMRpEcW0VCoZGudkrzL2Wg8KPKWMNVQGAfzkBi2RkAQDNoQz9vBouxqXm4PqADl2EVU02akNJfibsuqlT9eOnSrEl8PLDoOyBmlWRpx68wMTnNF5GqiOY8nRF/G3XasctibCLwvZ+F66bBLSbbHUW0KE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1576317550; 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=nbZyf1ZW8K5V3e1TBoi/wLdXPiQC4RLxVjDdCL55/kI=; b=DgCkobG4G1uxFi1KDyD+t+pnYkAfyfvAvjgzlwO5AqN/u+euHZ1NOWQOA4e8NhYgR/kKjLkerlYoFbT/6LkpqzkJR8Wact53IhWL6IQuM23zsd4x8ZpX45ZAvmEznobs0mtTO2soIV26oVo9mduwkabdR6l+GH/KH3VA7xqtD/Y= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; 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=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1576317550058348.9857265323195; Sat, 14 Dec 2019 01:59:10 -0800 (PST) Received: from localhost ([::1]:57894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ig4Ca-0003Ri-Uj for importer@patchew.org; Sat, 14 Dec 2019 04:59:08 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:36007) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ig40X-0005Md-J2 for qemu-devel@nongnu.org; Sat, 14 Dec 2019 04:46:45 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ig40O-0006os-0f for qemu-devel@nongnu.org; Sat, 14 Dec 2019 04:46:36 -0500 Received: from us-smtp-delivery-1.mimecast.com ([207.211.31.120]:39880 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ig40N-0006mp-FS for qemu-devel@nongnu.org; Sat, 14 Dec 2019 04:46:31 -0500 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-299-mli9XaguOgyNadWrUdvxHQ-1; Sat, 14 Dec 2019 04:46:29 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C7B3F1800D63; Sat, 14 Dec 2019 09:46:27 +0000 (UTC) Received: from localhost (ovpn-116-90.ams2.redhat.com [10.36.116.90]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1ED5E5D9C9; Sat, 14 Dec 2019 09:46:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1576316790; 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=nbZyf1ZW8K5V3e1TBoi/wLdXPiQC4RLxVjDdCL55/kI=; b=SaaUd37tr6mWXxEh4w7QJFzXgPr+BlIWUTq9feOtUqzacJcF7ypkdyVQzfhpDaT3OkglHS c7JXeBEH9RpnryCItXSmCNX3wSAaGRUIok8jOejm+WBCVT0NYAMf7Evt0n3EQvNcIhrFe/ wg30nlNqljValxP6a8yM/UMECVzOOTs= From: Cornelia Huck To: Peter Maydell Subject: [PULL v2 16/16] qga: fence guest-set-time if hwclock not available Date: Sat, 14 Dec 2019 10:45:26 +0100 Message-Id: <20191214094526.8698-17-cohuck@redhat.com> In-Reply-To: <20191214094526.8698-1-cohuck@redhat.com> References: <20191214094526.8698-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 X-MC-Unique: mli9XaguOgyNadWrUdvxHQ-1 X-Mimecast-Spam-Score: 0 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Cornelia Huck , qemu-devel@nongnu.org, Michael Roth , qemu-s390x@nongnu.org, Laszlo Ersek Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" The Posix implementation of guest-set-time invokes hwclock to set/retrieve the time to/from the hardware clock. If hwclock is not available, the user is currently informed that "hwclock failed to set hardware clock to system time", which is quite misleading. This may happen e.g. on s390x, which has a different timekeeping concept anyway. Let's check for the availability of the hwclock command and return QERR_UNSUPPORTED for guest-set-time if it is not available. Reviewed-by: Laszlo Ersek Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Michael Roth Message-Id: <20191205115350.18713-1-cohuck@redhat.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Cornelia Huck --- qga/commands-posix.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/qga/commands-posix.c b/qga/commands-posix.c index 1c1a165daed8..0be301a4ea77 100644 --- a/qga/commands-posix.c +++ b/qga/commands-posix.c @@ -156,6 +156,17 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns= , Error **errp) pid_t pid; Error *local_err =3D NULL; struct timeval tv; + static const char hwclock_path[] =3D "/sbin/hwclock"; + static int hwclock_available =3D -1; + + if (hwclock_available < 0) { + hwclock_available =3D (access(hwclock_path, X_OK) =3D=3D 0); + } + + if (!hwclock_available) { + error_setg(errp, QERR_UNSUPPORTED); + return; + } =20 /* If user has passed a time, validate and set it. */ if (has_time) { @@ -195,7 +206,7 @@ void qmp_guest_set_time(bool has_time, int64_t time_ns,= Error **errp) =20 /* Use '/sbin/hwclock -w' to set RTC from the system time, * or '/sbin/hwclock -s' to set the system time from RTC. */ - execle("/sbin/hwclock", "hwclock", has_time ? "-w" : "-s", + execle(hwclock_path, "hwclock", has_time ? "-w" : "-s", NULL, environ); _exit(EXIT_FAILURE); } else if (pid < 0) { --=20 2.21.0