From nobody Sun Feb 8 09:12:24 2026 Delivered-To: importer@patchew.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=pass(p=none dis=none) header.from=nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1650890851; cv=none; d=zohomail.com; s=zohoarc; b=gS6Fy34z8AkGvIqLfjbzpicp2XXn/vkybVfrrv9ZnlInYE/32fbPxVHrsVjQqWvAor38l7Dr5WsDKLahpQbPM51i/ZTLrhs83LN5Mo2nWjYk+lGsWEXJOAwfIRTeoi6/zIaw/N/03ekNDanMAIZkVAjQnAFPWv8dS0esXabA1xw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650890851; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=eiUhLnvniCRFRmHg94IspHR8zuzxCuN7kmOFel0V+B0=; b=I2lwxnOcVOqiAN4PWrGJJpgu5HWacsSClV3QR8ti4ppmVZSZOFNFJQxB6UXakFIRNAx7GiSw4Xtjps2fwBq34R7t0475qd8jym26iuyCuNRjgtzUAKvV9DQT4UiOeFc+SxCsvfrQEqI6qhZgkhPL6kNB8uKB3LRvIPghyZta8OQ= 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=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 1650890851159588.0339494060952; Mon, 25 Apr 2022 05:47:31 -0700 (PDT) Received: from localhost ([::1]:41320 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niy7m-0005X3-49 for importer@patchew.org; Mon, 25 Apr 2022 08:47:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37150) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <45f83750655d27fae163e1169be44b72e9c72101@lizzy.crudebyte.com>) id 1niy2E-00068g-Sm; Mon, 25 Apr 2022 08:41:46 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:40437) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <45f83750655d27fae163e1169be44b72e9c72101@lizzy.crudebyte.com>) id 1niy2C-0002CQ-Gm; Mon, 25 Apr 2022 08:41:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=eiUhLnvniCRFRmHg94IspHR8zuzxCuN7kmOFel0V+B0=; b=BerNB RbopCkoxgG5gOX5xxT49Z8FIqgiRSP/v1Y6cCcqb3cmWRzccbti7WPCbkOzOQho8wMrZ7WAthmya5 S+L/ZvTniSRt8t/Y31sRerVh8ArtwTPn2VvXiJA0/Sg9l8nkiXHwK+PsinGqPDSzPB/qA18rlLZvQ IGFtxzZt/13v6LtTGS9DkbCFiFJPnwLuc6UkqFEczUcbaOSzxCg8AxHtnDkv1J4hy1NGtAHDyWLmQ c6M6JIT0UuqOO0JvUqHTVDn4zi1uxAWBzIyNsTB8WykifQdYihlnjVXdCrKG/IrxZQGe1NpSspoRR XqOS50B17YBo7Yz5Qu1GDyxD2gL1g==; Message-Id: <45f83750655d27fae163e1169be44b72e9c72101.1650889268.git.qemu_oss@crudebyte.com> In-Reply-To: References: Date: Mon, 25 Apr 2022 14:20:43 +0200 Subject: [PATCH v3 1/6] 9pfs: fix qemu_mknodat(S_IFREG) on macOS To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=45f83750655d27fae163e1169be44b72e9c72101@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" Reply-to: Christian Schoenebeck From: Christian Schoenebeck via X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1650890851885100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" mknod() on macOS does not support creating regular files, so divert to openat_file() if S_IFREG is passed with mode argument. Furthermore, 'man 2 mknodat' on Linux says: "Zero file type is equivalent to type S_IFREG". Link: https://lore.kernel.org/qemu-devel/17933734.zYzKuhC07K@silver/ Signed-off-by: Christian Schoenebeck Reviewed-by: Will Cohen Reviewed-by: Greg Kurz --- hw/9pfs/9p-util-darwin.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/hw/9pfs/9p-util-darwin.c b/hw/9pfs/9p-util-darwin.c index bec0253474..e24d09763a 100644 --- a/hw/9pfs/9p-util-darwin.c +++ b/hw/9pfs/9p-util-darwin.c @@ -77,6 +77,15 @@ int fsetxattrat_nofollow(int dirfd, const char *filename= , const char *name, int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t dev) { int preserved_errno, err; + + if (S_ISREG(mode) || !(mode & S_IFMT)) { + int fd =3D openat_file(dirfd, filename, O_CREAT, mode); + if (fd =3D=3D -1) { + return fd; + } + close(fd); + return 0; + } if (!pthread_fchdir_np) { error_report_once("pthread_fchdir_np() not available on this versi= on of macOS"); return -ENOTSUP; --=20 2.32.0 (Apple Git-132) From nobody Sun Feb 8 09:12:24 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=quarantine dis=none) header.from=crudebyte.com ARC-Seal: i=1; a=rsa-sha256; t=1650891154; cv=none; d=zohomail.com; s=zohoarc; b=JnGVPLqC9I55D/TiIlk3TMJDG6sCgQr9kIb2oA+gtO1Au6NDDERf9B4RzZqwnLqSva16MW1zry7I5Px9RC3Go2REVeoYEYszID31/l67NzwIkt1th/D7a/u9jkzHDnBavRHs4vnqkj1shJ0gwoPnFw3CBL9Bb67/yA09HF5Ukl4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650891154; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=gzOd4GsYn/XKXfI1lySAuBJnS6kFij8jaaAd4K88ebA=; b=R2GXFGvZ9/oIMpS9/NuRrsby2ThiTXgJGtpVgZFXj/i6VDJua+jLE65pa0SXXkeKo74Bxi7htBB8/dP2dbbty3XloZzGne48cCxUd1L5dabeE7cyujkP/bhz/JJF+OTDK4nSilc0vII/20eoV6XmOwYxRGyIS3+oP8TXB02npjs= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1650891154742438.0260506576243; Mon, 25 Apr 2022 05:52:34 -0700 (PDT) Received: from localhost ([::1]:52982 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niyCf-0005Wn-Bf for importer@patchew.org; Mon, 25 Apr 2022 08:52:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37228) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <8420904094828b74404bd61cf1668e5c2f005158@lizzy.crudebyte.com>) id 1niy2J-0006Mo-B9; Mon, 25 Apr 2022 08:41:51 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:58567) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <8420904094828b74404bd61cf1668e5c2f005158@lizzy.crudebyte.com>) id 1niy2H-0002EA-96; Mon, 25 Apr 2022 08:41:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=gzOd4GsYn/XKXfI1lySAuBJnS6kFij8jaaAd4K88ebA=; b=d9gJS V1rTi++obVqzjt4Us5zIgKFPkTDmlHRXeGHcpdP9lDK5NdMvp0dLgbBvajUwU8/T5PojI/3Yx7ZU6 ANPtTlLxTs2HhbMRYaOzlWa6r3FancJiAgMXL9zDrImFUJOJQGi+4cZvq/LQjVtE/iODXajL+Vlva cJpmXmnAc3P3MpNZdgc9mWevDNDoVMqG+eOdQM0jBN90H8ZnX7ThlUnJlLKw6lmwGgwmQ/GvLaYrw yZD0uX2l0upeuyr7afYNcffAiJsspXgYe7mp+P7coc9p5s3Jt2TK4eV0wCqPk06vAkJjajWg59dqQ EAVJvpQEGSOLBxLXyXmuqmUJzXPmA==; Message-Id: <8420904094828b74404bd61cf1668e5c2f005158.1650889268.git.qemu_oss@crudebyte.com> In-Reply-To: References: From: Christian Schoenebeck Date: Mon, 25 Apr 2022 14:20:46 +0200 Subject: [PATCH v3 2/6] 9pfs: fix qemu_mknodat(S_IFSOCK) on macOS To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=8420904094828b74404bd61cf1668e5c2f005158@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" X-ZohoMail-DKIM: pass (identity @crudebyte.com) X-ZM-MESSAGEID: 1650891156745100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" mknod() on macOS does not support creating sockets, so divert to call sequence socket(), bind() and chmod() respectively if S_IFSOCK was passed with mode argument. Link: https://lore.kernel.org/qemu-devel/17933734.zYzKuhC07K@silver/ Signed-off-by: Christian Schoenebeck Reviewed-by: Will Cohen Reviewed-by: Greg Kurz --- hw/9pfs/9p-util-darwin.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/hw/9pfs/9p-util-darwin.c b/hw/9pfs/9p-util-darwin.c index e24d09763a..63797e60cd 100644 --- a/hw/9pfs/9p-util-darwin.c +++ b/hw/9pfs/9p-util-darwin.c @@ -74,6 +74,34 @@ int fsetxattrat_nofollow(int dirfd, const char *filename= , const char *name, */ #if defined CONFIG_PTHREAD_FCHDIR_NP =20 +static int create_socket_file_at_cwd(const char *filename, mode_t mode) { + int fd, err; + struct sockaddr_un addr =3D { + .sun_family =3D AF_UNIX + }; + + /* + * sun_path is only 104 bytes, explicit filename length check required + */ + if (sizeof(addr.sun_path) - 1 < strlen(filename) + 2) { + errno =3D ENAMETOOLONG; + return -1; + } + fd =3D socket(PF_UNIX, SOCK_DGRAM, 0); + if (fd =3D=3D -1) { + return fd; + } + snprintf(addr.sun_path, sizeof(addr.sun_path), "./%s", filename); + err =3D bind(fd, (struct sockaddr *) &addr, sizeof(addr)); + if (err =3D=3D -1) { + goto out; + } + err =3D chmod(addr.sun_path, mode); +out: + close_preserve_errno(fd); + return err; +} + int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t dev) { int preserved_errno, err; @@ -93,7 +121,11 @@ int qemu_mknodat(int dirfd, const char *filename, mode_= t mode, dev_t dev) if (pthread_fchdir_np(dirfd) < 0) { return -1; } - err =3D mknod(filename, mode, dev); + if (S_ISSOCK(mode)) { + err =3D create_socket_file_at_cwd(filename, mode); + } else { + err =3D mknod(filename, mode, dev); + } preserved_errno =3D errno; /* Stop using the thread-local cwd */ pthread_fchdir_np(-1); --=20 2.32.0 (Apple Git-132) From nobody Sun Feb 8 09:12:24 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=quarantine dis=none) header.from=crudebyte.com ARC-Seal: i=1; a=rsa-sha256; t=1650890667; cv=none; d=zohomail.com; s=zohoarc; b=QZPF+n3vBxHMeY0LM91ei0hX7Gb3hn1fpyEVk5g1gPqtnXREh/Hn5fRyis8Yce4XzoX/8mZjKvWA1fquMfSSJHIdPugWZZjioinXrA0oZP9Kq3xhbTrFs4EETZGyPtcJjbk2Xu+I9cvwi1ViWAzuYib6za069b+YcxwHvXUh/yc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650890667; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=vq90Q4vtQmJgyHCseX/Xdws1yT3xxELHmtULnL9IalE=; b=CkSh3D77t7dgJEH4EjyP6HjjFqsubZzPI1575o2eeboi+B+n6fPLW8nU+6Bc4EKH57FigpeOyfwJVjO6i4kKJW9HwJP+AyFbya6aZyWmzo+Wi9WShP5nBajL5Qr4Zp8RUjKdspyGfCmn7DuG5htREJj/PWnA60Rde70IwqZVqrc= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1650890667764796.5481063668508; Mon, 25 Apr 2022 05:44:27 -0700 (PDT) Received: from localhost ([::1]:34860 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niy4o-0000kk-Ja for importer@patchew.org; Mon, 25 Apr 2022 08:44:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37152) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1niy2E-00069W-UD; Mon, 25 Apr 2022 08:41:46 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:37153) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1niy2C-0002Ed-G7; Mon, 25 Apr 2022 08:41:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=vq90Q4vtQmJgyHCseX/Xdws1yT3xxELHmtULnL9IalE=; b=miduV LNsXIVulmK1RA/BS9fdzWGKzotLPA9J8sgWsY5T7pTLrwiXRzR0uAaxhUoMFXvzdBZwdXoAgRUzxO HLk1SGFgPs2VZXvGY8ZiwnhbU62UAlnPUynR7xj0skI19pGDFkfMgNiKpJAxXHNhw85+Qu9ns9HgY LFkLx8l92EViXpSjkol7Qv2oNQjNkyD1eiy/U8U8HGO+GeUcipgj8HQFwwPF2xskDz3q+UDbqpUvd tDHjHfnSu4jIkhMLZjK4RYNLwJFxqUcmlB9Rd+gVh8kjMk8JdFxgj5s14oPVoRApjzx5mEx62/Awx pQhMf3UUfQ6PWdt1mZBJOruI1/Pzw==; Message-Id: In-Reply-To: References: From: Christian Schoenebeck Date: Mon, 25 Apr 2022 14:20:49 +0200 Subject: [PATCH v3 3/6] 9pfs: fix wrong encoding of rdev field in Rgetattr on macOS To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=e0293bfec97b3ccf350f47903a4e8c8fc65d9826@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" X-ZohoMail-DKIM: pass (identity @crudebyte.com) X-ZM-MESSAGEID: 1650890671449100003 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" The 'rdev' field in 9p reponse 'Rgetattr' is of type dev_t, which is actually a system dependant type and therefore both the size and encoding of dev_t differ between macOS and Linux. So far we have sent 'rdev' to guest in host's dev_t format as-is, which caused devices to appear with wrong device numbers on guests running on macOS hosts, eventually leading to various misbehaviours on guest in conjunction with device files. This patch fixes this issue by converting the device number from host's dev_t format to Linux dev_t format. As 9p request 'Tgettattr' is exclusive to protocol version 9p2000.L, it should be fair to assume that 'rdev' field is assumed to be in Linux dev_t format by client as well. Signed-off-by: Christian Schoenebeck Link: https://lore.kernel.org/qemu-devel/20220421093056.5ab1e7ed@bahia/ Reviewed-by: Greg Kurz --- hw/9pfs/9p-util.h | 39 +++++++++++++++++++++++++++++++++++++++ hw/9pfs/9p.c | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h index 97e681e167..2cc9a5dbfb 100644 --- a/hw/9pfs/9p-util.h +++ b/hw/9pfs/9p-util.h @@ -19,6 +19,45 @@ #define O_PATH_9P_UTIL 0 #endif =20 +#if !defined(CONFIG_LINUX) + +/* + * Generates a Linux device number (a.k.a. dev_t) for given device major + * and minor numbers. + * + * To be more precise: it generates a device number in glibc's format + * (MMMM_Mmmm_mmmM_MMmm, 64 bits) actually, which is compatible with + * Linux's format (mmmM_MMmm, 32 bits), as described in . + */ +static inline uint64_t makedev_dotl(uint32_t dev_major, uint32_t dev_minor) +{ + uint64_t dev; + + // from glibc sysmacros.h: + dev =3D (((uint64_t) (dev_major & 0x00000fffu)) << 8); + dev |=3D (((uint64_t) (dev_major & 0xfffff000u)) << 32); + dev |=3D (((uint64_t) (dev_minor & 0x000000ffu)) << 0); + dev |=3D (((uint64_t) (dev_minor & 0xffffff00u)) << 12); + return dev; +} + +#endif + +/* + * Converts given device number from host's device number format to Linux + * device number format. As both the size of type dev_t and encoding of + * dev_t is system dependant, we have to convert them for Linux guests if + * host is not running Linux. + */ +static inline uint64_t host_dev_to_dotl_dev(dev_t dev) +{ +#ifdef CONFIG_LINUX + return dev; +#else + return makedev_dotl(major(dev), minor(dev)); +#endif +} + #ifdef CONFIG_DARWIN #define qemu_fgetxattr(...) fgetxattr(__VA_ARGS__, 0, 0) #define qemu_lgetxattr(...) getxattr(__VA_ARGS__, 0, XATTR_NOFOLLOW) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 225f31fc31..4a296a0b94 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -1327,7 +1327,7 @@ static int stat_to_v9stat_dotl(V9fsPDU *pdu, const st= ruct stat *stbuf, v9lstat->st_nlink =3D stbuf->st_nlink; v9lstat->st_uid =3D stbuf->st_uid; v9lstat->st_gid =3D stbuf->st_gid; - v9lstat->st_rdev =3D stbuf->st_rdev; + v9lstat->st_rdev =3D host_dev_to_dotl_dev(stbuf->st_rdev); v9lstat->st_size =3D stbuf->st_size; v9lstat->st_blksize =3D stat_to_iounit(pdu, stbuf); v9lstat->st_blocks =3D stbuf->st_blocks; --=20 2.32.0 (Apple Git-132) From nobody Sun Feb 8 09:12:24 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=quarantine dis=none) header.from=crudebyte.com ARC-Seal: i=1; a=rsa-sha256; t=1650891131; cv=none; d=zohomail.com; s=zohoarc; b=KyO+/h2rQR1dkzOPItF4zhpCHqjIAxdgKSKkIp2pRH2BPbkDAjhb7JsD/DZxdS1/xoRIUwAU87xU70JBdlYVzfdOECwV1+8GsltHelKUSkAcAtDYNIN7PmgGoHtoAfyYQ0EHgxW4ne4N+EssoDBm2I2frLFwtXrrjobPfFDTKfI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650891131; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=h5gEMFKynyRupF+CalLbdJKoS+M1CM7mAUU/pFySbx4=; b=CgoDrdWDlSJNvKQBXO5nQ+5jTPNzVPjgpKFQpWHXzenwg2dycdr157RCtUL2JjRzdoq//JZk8kr6nfgPE78Mukdt2R8dptaISv18Ngd0ptx0RGHmwkliFELgiL++cYp9jV3zNmS5bX82BSXEUGgWJccI0wBxrvERZxBpjvSr+zk= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1650891131636878.744381138203; Mon, 25 Apr 2022 05:52:11 -0700 (PDT) Received: from localhost ([::1]:51566 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niyCI-0004VB-DO for importer@patchew.org; Mon, 25 Apr 2022 08:52:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3c49b15015323427dc0a99c5c8a8ee4f72da083c@lizzy.crudebyte.com>) id 1niy2J-0006Lf-1x; Mon, 25 Apr 2022 08:41:51 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:51741) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3c49b15015323427dc0a99c5c8a8ee4f72da083c@lizzy.crudebyte.com>) id 1niy2H-0002Er-5L; Mon, 25 Apr 2022 08:41:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=h5gEMFKynyRupF+CalLbdJKoS+M1CM7mAUU/pFySbx4=; b=BvKKC 47atRotmoN1daTZJaOgC6zwqi6Bvacmpx0SbNhEgb+7q5bHfJ4jCjEzVuvBJiTO7ehlzTZ9bMCLKL lquYk6HCxus7rd33ESj6op1/mCrDqqY7jeao0R0P1Ujl2XNSqefCBeJhmkNFgq+zkRU13qlwiX+dB +sMfzs5NJE3r8aFdKBzwcXV4ug4zouTN/gwd2XXgrQN4o+mySUVnx1Iyc1AbNl8Jgaqdwfvqdxlah GP9hcPTrPfbHDOQ0JdeyBPxqw3W+y9BTxViPnW/mEzK3SwpSKNWuMLe38648f3kg83CIhZe70t5ob GTnRU9josPCGbKLqf/O91vL9K9phg==; Message-Id: <3c49b15015323427dc0a99c5c8a8ee4f72da083c.1650889269.git.qemu_oss@crudebyte.com> In-Reply-To: References: From: Christian Schoenebeck Date: Mon, 25 Apr 2022 14:20:51 +0200 Subject: [PATCH v3 4/6] 9pfs: fix wrong errno being sent to Linux client on macOS host To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=3c49b15015323427dc0a99c5c8a8ee4f72da083c@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" X-ZohoMail-DKIM: pass (identity @crudebyte.com) X-ZM-MESSAGEID: 1650891132901100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Linux and macOS only share some errno definitions with equal macro name and value. In fact most mappings for errno are completely different on the two systems. This patch converts some important errno values from macOS host to corresponding Linux errno values before eventually sending such error codes along with 'Rlerror' replies (if 9p2000.L is used that is). Not having translated errnos before violated the 9p2000.L protocol spec, which says: " size[4] Rlerror tag[2] ecode[4] ... ecode is a numerical Linux errno. " https://github.com/chaos/diod/wiki/protocol#lerror----return-error-code This patch fixes a bunch of misbehaviours when running a Linux client on macOS host. For instance this patch fixes: mount -t 9p -o posixacl ... on Linux guest if security_mode=3Dmapped was used for 9p server, which refused to mount successfully, because macOS returned ENOATTR=3D=3D93 when client tried to retrieve POSIX ACL xattrs, because errno 93 is defined as EPROTONOSUPPORT=3D=3D93 on Linux, so Linux client believed that xattrs were not supported by filesystem on host in general. Signed-off-by: Christian Schoenebeck Link: https://lore.kernel.org/qemu-devel/20220421124835.3e664669@bahia/ Reviewed-by: Greg Kurz --- hw/9pfs/9p-util.h | 30 ++++++++++++++++++++++++++++++ hw/9pfs/9p.c | 2 ++ 2 files changed, 32 insertions(+) diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h index 2cc9a5dbfb..c3526144c9 100644 --- a/hw/9pfs/9p-util.h +++ b/hw/9pfs/9p-util.h @@ -58,6 +58,36 @@ static inline uint64_t host_dev_to_dotl_dev(dev_t dev) #endif } =20 +/* Translates errno from host -> Linux if needed */ +static inline int errno_to_dotl(int err) { +#if defined(CONFIG_LINUX) + /* nothing to translate (Linux -> Linux) */ +#elif defined(CONFIG_DARWIN) + /* + * translation mandatory for macOS hosts + * + * FIXME: Only most important errnos translated here yet, this should = be + * extended to as many errnos being translated as possible in future. + */ + if (err =3D=3D ENAMETOOLONG) { + err =3D 36; /* =3D=3DENAMETOOLONG on Linux */ + } else if (err =3D=3D ENOTEMPTY) { + err =3D 39; /* =3D=3DENOTEMPTY on Linux */ + } else if (err =3D=3D ELOOP) { + err =3D 40; /* =3D=3DELOOP on Linux */ + } else if (err =3D=3D ENOATTR) { + err =3D 61; /* =3D=3DENODATA on Linux */ + } else if (err =3D=3D ENOTSUP) { + err =3D 95; /* =3D=3DEOPNOTSUPP on Linux */ + } else if (err =3D=3D EOPNOTSUPP) { + err =3D 95; /* =3D=3DEOPNOTSUPP on Linux */ + } +#else +#error Missing errno translation to Linux for this host system +#endif + return err; +} + #ifdef CONFIG_DARWIN #define qemu_fgetxattr(...) fgetxattr(__VA_ARGS__, 0, 0) #define qemu_lgetxattr(...) getxattr(__VA_ARGS__, 0, XATTR_NOFOLLOW) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index 4a296a0b94..0cd0c14c2a 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -1054,6 +1054,8 @@ static void coroutine_fn pdu_complete(V9fsPDU *pdu, s= size_t len) } len +=3D ret; id =3D P9_RERROR; + } else { + err =3D errno_to_dotl(err); } =20 ret =3D pdu_marshal(pdu, len, "d", err); --=20 2.32.0 (Apple Git-132) From nobody Sun Feb 8 09:12:24 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=quarantine dis=none) header.from=crudebyte.com ARC-Seal: i=1; a=rsa-sha256; t=1650890899; cv=none; d=zohomail.com; s=zohoarc; b=TkXFXni1NJLLZ/XZO369uedSsb/s2KjQ/JLbgHfbLmLG7BDiCZBq5LoMG0QBb4/tSa1PMknqxFO+QgsqMO9nPHT46XTHuE92A6YEeJfYb5v+LRwE1YFij+fxEpN5JIUHA7zV2atujWMztQUsewcrDzWyAypWx472DvgY7c7uys4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650890899; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=zIrDZd4x8Db0Bp3YUnjhpQ8lXXOO3jEp+5fUqSQpDeA=; b=IVpODBPD87k2QfWvRmQBvh4fgVtcdXl0RkTwM7KHW10saV4PctNGomWZPuudBUZxRiMmk7n+dzSxqz/tG7eQqr2AX26gTsJ5GnWk3N8IrXunS4f0rlaoxVymM34o2OAvI3WU/euVs56jzZvJOn905fbjvWqD6xAmOUyjInguTt0= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1650890899394836.4155626938243; Mon, 25 Apr 2022 05:48:19 -0700 (PDT) Received: from localhost ([::1]:44234 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niy8Y-0007qA-E6 for importer@patchew.org; Mon, 25 Apr 2022 08:48:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37222) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <5ba5c1058b47466193a6716d5e30f69817fda707@lizzy.crudebyte.com>) id 1niy2I-0006KU-Oa; Mon, 25 Apr 2022 08:41:50 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:36553) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <5ba5c1058b47466193a6716d5e30f69817fda707@lizzy.crudebyte.com>) id 1niy2G-0002Ev-VO; Mon, 25 Apr 2022 08:41:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=zIrDZd4x8Db0Bp3YUnjhpQ8lXXOO3jEp+5fUqSQpDeA=; b=YYKwX DWXmNszLy/fskLS6Ap8Phq/CZsS98Q/KnK2615vsgd9HFOm0yMiiK3OYqvjmi1xKq+UrqUXzyy9sJ gzaBNgA89I6HHXA2e4FqvXD74yaiL/3I3Nd8GpWxl+uRNrg1GROHrjOSveDEDTKdhEnZ550Mcdp7B 3Syb/wZGnOwraPm3QW7mHxy3M3GEiOgm9/inNTXszXmGlEuFui16G7zN8EfIyygaZPHHVKvmlQw6C yC5IcI+jO9pWAfLRSLTTC9S8Stx8y3B1YUwTXUr9TuDtZRxS5tHmkswZnp5jlLkK08HnJDwEBK9Us 7u7cEDTTQdunEYG3yK1JlMkJfQv0g==; Message-Id: <5ba5c1058b47466193a6716d5e30f69817fda707.1650889269.git.qemu_oss@crudebyte.com> In-Reply-To: References: From: Christian Schoenebeck Date: Mon, 25 Apr 2022 14:20:53 +0200 Subject: [PATCH v3 5/6] 9pfs: fix removing non-existent POSIX ACL xattr on macOS host To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=5ba5c1058b47466193a6716d5e30f69817fda707@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" X-ZohoMail-DKIM: pass (identity @crudebyte.com) X-ZM-MESSAGEID: 1650890900062100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When mapped POSIX ACL is used, we are ignoring errors when trying to remove a POSIX ACL xattr that does not exist. On Linux hosts we would get ENODATA in such cases, on macOS hosts however we get ENOATTR instead. As we can be sure that ENOATTR is defined as being identical on Linux hosts (at least by qemu/xattr.h), it is safe to fix this issue by simply comparing against ENOATTR instead of ENODATA. This patch fixes e.g. a command on Linux guest like: cp --preserve=3Dmode old new Signed-off-by: Christian Schoenebeck Link: https://lore.kernel.org/qemu-devel/2866993.yOYK24bMf6@silver/ Reviewed-by: Greg Kurz --- hw/9pfs/9p-posix-acl.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/hw/9pfs/9p-posix-acl.c b/hw/9pfs/9p-posix-acl.c index eadae270dd..4b2cb3c66c 100644 --- a/hw/9pfs/9p-posix-acl.c +++ b/hw/9pfs/9p-posix-acl.c @@ -65,7 +65,11 @@ static int mp_pacl_removexattr(FsContext *ctx, int ret; =20 ret =3D local_removexattr_nofollow(ctx, path, MAP_ACL_ACCESS); - if (ret =3D=3D -1 && errno =3D=3D ENODATA) { + /* + * macOS returns ENOATTR (!=3DENODATA on macOS), whereas Linux returns + * ENODATA (=3D=3DENOATTR on Linux), so checking for ENOATTR is fine + */ + if (ret =3D=3D -1 && errno =3D=3D ENOATTR) { /* * We don't get ENODATA error when trying to remove a * posix acl that is not present. So don't throw the error @@ -115,7 +119,11 @@ static int mp_dacl_removexattr(FsContext *ctx, int ret; =20 ret =3D local_removexattr_nofollow(ctx, path, MAP_ACL_DEFAULT); - if (ret =3D=3D -1 && errno =3D=3D ENODATA) { + /* + * macOS returns ENOATTR (!=3DENODATA on macOS), whereas Linux returns + * ENODATA (=3D=3DENOATTR on Linux), so checking for ENOATTR is fine + */ + if (ret =3D=3D -1 && errno =3D=3D ENOATTR) { /* * We don't get ENODATA error when trying to remove a * posix acl that is not present. So don't throw the error --=20 2.32.0 (Apple Git-132) From nobody Sun Feb 8 09:12:24 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=quarantine dis=none) header.from=crudebyte.com ARC-Seal: i=1; a=rsa-sha256; t=1650890905; cv=none; d=zohomail.com; s=zohoarc; b=Diz1NcoEezFK51d6tTo6BBGrJceD/iWXUVQ5uS3QChaDX6KzYcsy9PLWYZOSr8+DBsfkNt675MpCH3DEVF1BiUnG6MKOPdnqJdF8QPKDp6xHcUxJa7ea2zgLgZlUjs2IvTPbBVOUVI05C2or5kbQ+8DeQLNXgTCFDpvJ7HS4iYY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1650890905; h=Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:Message-ID:References:Sender:Subject:To; bh=myq6ngtHVzBS4tdzAixde8cZaPnHU7WFY+q0wZWZ53M=; b=YxxCUQIZDW5Bmd7xY6K9pZ21ngyuKtQ+leZdEgXTqa1eLkPhLA1kHVii1Y/yjpngX/suYZIQ6i0enuQYmLdRGhaRGwVHpWDU1aKIdSJM1UXVVd00ih16kcEELgSkl8eNaQnXP855xi94oLlmasIwLozIsYDe3IigHaU4hQBbI0o= 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=quarantine dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 165089090548678.45748148808684; Mon, 25 Apr 2022 05:48:25 -0700 (PDT) Received: from localhost ([::1]:44528 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1niy8c-00082P-5K for importer@patchew.org; Mon, 25 Apr 2022 08:48:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37204) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1niy2H-0006HT-Rz; Mon, 25 Apr 2022 08:41:49 -0400 Received: from lizzy.crudebyte.com ([91.194.90.13]:34935) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1niy2G-0002F9-F0; Mon, 25 Apr 2022 08:41:49 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=crudebyte.com; s=lizzy; h=Cc:To:Subject:Date:From:References:In-Reply-To: Message-Id:Content-Type:Content-Transfer-Encoding:MIME-Version:Content-ID: Content-Description; bh=myq6ngtHVzBS4tdzAixde8cZaPnHU7WFY+q0wZWZ53M=; b=Vuvs8 1nC3O11WiCvE4KA8g06rfeNr1iykCPhs3KqrX8+tOO+h5uIZ3gVMPLQH31tndhWFEeh1y43L/JX6k 0eYZswfHcScjBwvi20Vq/E5ZLsX0AyfJKtXESaXSgZC2iLUUcIFkGCMNaQRSo8qWwBjCixe16Xmd+ 5VLDzY/jRD+E4zshAYzHUWb75chUaenRFnJ/0S94T1m06+lDQ1dsHJ6yEWPFuzpUDMfhxF89GJNlL jz/Bb/uEyAh0khkWHMBt18jZDVQrfudeu8EsNbim4fuca0DR4K7GOo0WMHSo8eizbomW2MGGWMzJC nhGHKL9HT8dmbxKd0c0/EoOeLK2MA==; Message-Id: In-Reply-To: References: From: Christian Schoenebeck Date: Mon, 25 Apr 2022 14:21:00 +0200 Subject: [PATCH v3 6/6] 9pfs: fix qemu_mknodat() to always return -1 on error on macOS host To: qemu-devel@nongnu.org Cc: Will Cohen , Greg Kurz , Michael Roitzsch , Keno Fischer , Akihiko Odaki , qemu-stable@nongnu.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; Received-SPF: none client-ip=91.194.90.13; envelope-from=a48ced8707c1e07420e692088905ee23fde132f8@lizzy.crudebyte.com; helo=lizzy.crudebyte.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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" X-ZohoMail-DKIM: pass (identity @crudebyte.com) X-ZM-MESSAGEID: 1650890906070100001 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" qemu_mknodat() is expected to behave according to its POSIX API, and therefore should always return exactly -1 on any error, and errno should be set for the actual error code. Signed-off-by: Christian Schoenebeck Reviewed-by: Greg Kurz --- hw/9pfs/9p-util-darwin.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/9pfs/9p-util-darwin.c b/hw/9pfs/9p-util-darwin.c index 63797e60cd..7364da394c 100644 --- a/hw/9pfs/9p-util-darwin.c +++ b/hw/9pfs/9p-util-darwin.c @@ -116,7 +116,8 @@ int qemu_mknodat(int dirfd, const char *filename, mode_= t mode, dev_t dev) } if (!pthread_fchdir_np) { error_report_once("pthread_fchdir_np() not available on this versi= on of macOS"); - return -ENOTSUP; + errno =3D ENOTSUP; + return -1; } if (pthread_fchdir_np(dirfd) < 0) { return -1; --=20 2.32.0 (Apple Git-132)