From nobody Fri Apr 19 22:45:27 2024 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=1574968346; cv=none; d=zohomail.com; s=zohoarc; b=UzCA95uJ2H4r2e3FGo14D7ryjBHzzK9zdWY8TgGVrOt8tKSPt0am5lMGhAy8k6W1laL5coBvG2jMHLOuPKJMZjhN7DJ+iRhT4mXZ/zoTtLICL5lZtMsKQk/96uK6NixqdhAj8z3psROpZtq3DRUjKxtEPr0/jk3sU5AEzUZhhGQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1574968346; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=qLEFXoqq1G06/WAJ/X09qY5VOZBdscnk6gkfirUXnUA=; b=QnqMcH19I1UXrWR1puuTNIbs2BVpa5ZQ46g3//9F6pyepaZJMTOj4HQpX7FeLAFg7q7ZKRkoadjaF9fGXj8RCwQFK3VK+ZjuLNiL+eCN3LDTsKIIwuZ6du1Ki2zmzFNPX7uE1xyA3r57A4Q2zoR5eV/cuHJMPcog3bOFHv8qTuI= 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 1574968345951658.449874545954; Thu, 28 Nov 2019 11:12:25 -0800 (PST) Received: from localhost ([::1]:52494 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaPDC-00033s-V8 for importer@patchew.org; Thu, 28 Nov 2019 14:12:22 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:39437) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iaOGA-0001yk-Ei for qemu-devel@nongnu.org; Thu, 28 Nov 2019 13:11:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iaOG0-000187-JA for qemu-devel@nongnu.org; Thu, 28 Nov 2019 13:11:13 -0500 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:51332 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iaOFz-0000r8-E8 for qemu-devel@nongnu.org; Thu, 28 Nov 2019 13:11:12 -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-217-_HfXfYfuOCW-KIYGJ3gEnQ-1; Thu, 28 Nov 2019 13:11:05 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 155818017CC; Thu, 28 Nov 2019 18:11:04 +0000 (UTC) Received: from localhost (ovpn-116-200.ams2.redhat.com [10.36.116.200]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8C41BA203; Thu, 28 Nov 2019 18:11:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1574964668; 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; bh=qLEFXoqq1G06/WAJ/X09qY5VOZBdscnk6gkfirUXnUA=; b=RX8bNTXptUG8S4gTwgw9VVWDl1EJCYoExYdlBn80KkkEtKi0fMekn1Ob7OoGMZQ4vhaK4K Mtyj4F4g79FRWfdQsw91Aglixu9eDPibsyeYNwxsLKnbkn/4YNCncu/5H2jSovHfzy8nx0 N9FVvak2VHcOg/U+Nf2pfuhOapHYOCM= From: Cornelia Huck To: Michael Roth Subject: [PATCH v2] qga: fence guest-set-time if hwclock not available Date: Thu, 28 Nov 2019 19:11:00 +0100 Message-Id: <20191128181100.23187-1-cohuck@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-MC-Unique: _HfXfYfuOCW-KIYGJ3gEnQ-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.81 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: Laszlo Ersek , Cornelia Huck , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , qemu-devel@nongnu.org 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. Signed-off-by: Cornelia Huck Reviewed-by: Daniel P. Berrang=C3=A9 Reviewed-by: Laszlo Ersek Reviewed-by: Michael Roth --- v1 (RFC) -> v2: - use hwclock_path[] - use access() instead of stat() --- 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..ffb6420fa9cd 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; + 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