From nobody Sat Feb 7 16:06:01 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=1629190722; cv=none; d=zohomail.com; s=zohoarc; b=lqmWO+k/UtJWlbyodOb7uhOPy4W3TLnK6IT+ueCuJBjMaOUFjENDasGD8Vgj8XnVONR5ayxIAyx9urhEa6ukwtKhrc8ySklQoY4WpTKpTZzCwOjv/q5dxmpZCNQU6p37Jnxlq/X/qnwNeQBmYr4peD1X59pZ8MGvih4m9LwHJrE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629190722; 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=Pi7VnpVH6EM8gDZHLmeZzVCrienYtGQFMeOTZtWZBOA=; b=i/v76B/oxhKbHl1ZfDay9HaBoir8c11lBCZwZM/dh1z+eTIHEiufx9Ve80xqyke1nSc5FyG9h3eiHwD6Y6bbmVwSXYSY/wqgTKiLLf5oBD5JqoylSM7IQIif05S9Jjd3WZkqmXGuAtf9Xchqf5Ce02D3mF0yZv/8ea1pTe3Js/k= 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 1629190722605869.5436509227283; Tue, 17 Aug 2021 01:58:42 -0700 (PDT) Received: from localhost ([::1]:58380 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mFuvh-0001Mo-Dv for importer@patchew.org; Tue, 17 Aug 2021 04:58:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:60080) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFuv6-0000hG-7I for qemu-devel@nongnu.org; Tue, 17 Aug 2021 04:58:04 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:46355) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFuv4-0005j1-KK for qemu-devel@nongnu.org; Tue, 17 Aug 2021 04:58:03 -0400 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-3-xqcvg14CPDmZ64DV7V0DZw-1; Tue, 17 Aug 2021 04:56:42 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BE115100A5F3 for ; Tue, 17 Aug 2021 08:56:41 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.138]) by smtp.corp.redhat.com (Postfix) with ESMTP id 15B2C60C81; Tue, 17 Aug 2021 08:56:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629190681; 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=Pi7VnpVH6EM8gDZHLmeZzVCrienYtGQFMeOTZtWZBOA=; b=Iz/n/HMMsga9hOQNjh4YSuYOauVWoz6nYlKQu7KCe0Ps4KnusgHA8ZYJU8L/Om4zD7ccvP ZGtmLDDrHFOT7JLD6jntEV54d0w8HTbTtnyaKsri34RAVFDMvITFHrJcxlkMV1/w7PhwNA e+NVQKc6jQUPNB0yZvZqHTBtxfJCinw= X-MC-Unique: xqcvg14CPDmZ64DV7V0DZw-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH 1/2] chardev: Propagate error from logfile opening Date: Tue, 17 Aug 2021 10:56:27 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mprivozn@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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=216.205.24.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.698, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1629190723644100001 Content-Type: text/plain; charset="utf-8" If a chardev has a logfile the file is opened using qemu_open_old() which does the job, but since @errp is not propagated into qemu_open_internal() we lose much more accurate error and just report "Unable to open logfile $errno". When using plain files, it's probably okay as nothing complex is happening behind the curtains. But the problem becomes more prominent when passing an "/dev/fdset/XXX" path since much more needs to be done. The fix is to use qemu_create() which passes @errp further down. Signed-off-by: Michal Privoznik Reviewed-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- chardev/char.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/chardev/char.c b/chardev/char.c index 4595a8d430..0169d8dde4 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -241,18 +241,15 @@ static void qemu_char_open(Chardev *chr, ChardevBacke= nd *backend, ChardevCommon *common =3D backend ? backend->u.null.data : NULL; =20 if (common && common->has_logfile) { - int flags =3D O_WRONLY | O_CREAT; + int flags =3D O_WRONLY; if (common->has_logappend && common->logappend) { flags |=3D O_APPEND; } else { flags |=3D O_TRUNC; } - chr->logfd =3D qemu_open_old(common->logfile, flags, 0666); + chr->logfd =3D qemu_create(common->logfile, flags, 0666, errp); if (chr->logfd < 0) { - error_setg_errno(errp, errno, - "Unable to open logfile %s", - common->logfile); return; } } --=20 2.31.1 From nobody Sat Feb 7 16:06:01 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=1629190657; cv=none; d=zohomail.com; s=zohoarc; b=L39Yegc4gmdr99ZbjNRHglnz0cX/FzCg2WuY1HNuUiRnkz6QNvZHVRIQNT6IdOjgNvMusGvxfYabTKynK1fesjPRCdUP4jAlzqktXYQv2iAkePVyYFwTpiNv6AJ/7OtwOyNlsTp15NHkHZ8oGTVmA7SE1pMrD7j2azUPnToiq6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1629190657; 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=DgjxDJMOxuV2UwHTihO6jrDYgqC8gKTZqmwzvtgQ0QY=; b=iEWOzhtW3OxUDQcggO1K0UWNyXF1Zoch3XurId/CAGcaiKs5GpuvlpVSJVMVW9Ft8HVl3blNGijdlgdD8aV2vr0eS8S3wAD8oHBE1LKiA2Kg9PyBsth4bnnWpxFTC5a/JsvRSo2MSB7AlZVKrkGQrrArbse5tDpXYmQjtbqCMWg= 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 1629190657559406.11157834913433; Tue, 17 Aug 2021 01:57:37 -0700 (PDT) Received: from localhost ([::1]:56202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mFuud-0008KY-MO for importer@patchew.org; Tue, 17 Aug 2021 04:57:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59770) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFutt-0007fW-8E for qemu-devel@nongnu.org; Tue, 17 Aug 2021 04:56:49 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:33052) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mFutr-0004WG-0d for qemu-devel@nongnu.org; Tue, 17 Aug 2021 04:56:48 -0400 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-27-ZiA_INReOteutBARQqN2bw-1; Tue, 17 Aug 2021 04:56:43 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id C015B802934 for ; Tue, 17 Aug 2021 08:56:42 +0000 (UTC) Received: from localhost.localdomain (unknown [10.40.194.138]) by smtp.corp.redhat.com (Postfix) with ESMTP id 173D461095; Tue, 17 Aug 2021 08:56:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1629190605; 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=DgjxDJMOxuV2UwHTihO6jrDYgqC8gKTZqmwzvtgQ0QY=; b=PKKrGvl/bv83NDnIbcE17C/ASLSd3GRAYhnvS+Cu5MbNPIj/VfBdu2UJjU/HC1m7sIhDUg NuyczwQ6ntjY9A5Mval0PfO2d+CKCl4dYy1dvL6xxFKJbVhi4mj4PVvtTLGEXeyoacFrGy 4Slcwn8vwSBMDsm6agVlRQ3db05hCZ4= X-MC-Unique: ZiA_INReOteutBARQqN2bw-1 From: Michal Privoznik To: qemu-devel@nongnu.org Subject: [PATCH 2/2] monitor: Report EBADFD if fdset contains invalid FD Date: Tue, 17 Aug 2021 10:56:28 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=mprivozn@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable 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=216.205.24.124; envelope-from=mprivozn@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -34 X-Spam_score: -3.5 X-Spam_bar: --- X-Spam_report: (-3.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.698, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-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.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: marcandre.lureau@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1629190659658100001 Content-Type: text/plain; charset="utf-8" When opening a path that starts with "/dev/fdset/" the control jumps into qemu_parse_fdset() and then into monitor_fdset_dup_fd_add(). In here, corresponding fdset is found and then all FDs from the set are iterated over trying to find an FD that matches expected access mode. For instance, if caller wants O_WRONLY then the FD set has to contain an O_WRONLY FD. If no such FD is found then errno is set to EACCES which results in very misleading error messages, for instance: Could not dup FD for /dev/fdset/3 flags 441: Permission denied There is no permission issue, the problem is that there was no FD within given fdset that was in expected access mode. Therefore, let's set errno to EBADFD, which gives us somewhat better error messages: Could not dup FD for /dev/fdset/3 flags 441: File descriptor in bad state Signed-off-by: Michal Privoznik --- monitor/misc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monitor/misc.c b/monitor/misc.c index ffe7966870..a0eda0d574 100644 --- a/monitor/misc.c +++ b/monitor/misc.c @@ -1347,7 +1347,7 @@ int monitor_fdset_dup_fd_add(int64_t fdset_id, int fl= ags) } =20 if (fd =3D=3D -1) { - errno =3D EACCES; + errno =3D EBADFD; return -1; } =20 --=20 2.31.1