From nobody Thu Mar 28 19:51:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1570548216; cv=none; d=zoho.com; s=zohoarc; b=gpFGPsMsRHXa47a6j5ulOztlOWjeceu3XG1DR1XfS+XfzOCGU5diiIHX5bge2UYE/tqyCEeU7EEHuuBMkaDnu4dy9R9fdT8Y4jP512kB3eNhh+ImXqPh6BF9M7UWQaWXNL7o3Hse/NJDu0tV+zGsYLF2s7XcnFYBdPsfZN8hs2k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570548216; h=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=MLPKsLOMiIxijUqQJOMlj2KYiHO4vTkolaRL7J8m8ME=; b=CqeY+ZBNXITPZSGNI9JfQXqmTWogBc4xnGhFOw9CnhMhRmt3k0cT1LBKtVIAxBdC/f6iY4qu6vjPr0Do0YFUh9UhIgyqcF4ZQaMKXxlRgdDjCvsa/USocXDXUP9a4M5PXnuKsL/XsAvh37Z7WOGZAt4X+H5+FTGj2oQ6t0OKrKY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570548216512763.2373584458484; Tue, 8 Oct 2019 08:23:36 -0700 (PDT) Received: from localhost ([::1]:57354 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrKm-0001bi-Af for importer@patchew.org; Tue, 08 Oct 2019 11:23:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58297) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrH9-00072O-1E for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHrH6-0000WD-VV for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:46 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:31834) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHrH4-0000Rb-Vo for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:44 -0400 Received: from pps.filterd (m0098404.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x98FDc6v117447 for ; Tue, 8 Oct 2019 11:19:40 -0400 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 2vgtayfeuw-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 08 Oct 2019 11:19:40 -0400 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 8 Oct 2019 16:19:37 +0100 Received: from b06cxnps4074.portsmouth.uk.ibm.com (9.149.109.196) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 8 Oct 2019 16:19:34 +0100 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06cxnps4074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x98FJXOR40239196 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Oct 2019 15:19:33 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id DEF07AE059; Tue, 8 Oct 2019 15:19:32 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C1279AE058; Tue, 8 Oct 2019 15:19:32 +0000 (GMT) Received: from smtp.tls.ibm.com (unknown [9.101.4.1]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 8 Oct 2019 15:19:32 +0000 (GMT) Received: from bahia.tls.ibm.com (bahia.tls.ibm.com [9.101.4.41]) by smtp.tls.ibm.com (Postfix) with ESMTP id 8A4FF2201ED; Tue, 8 Oct 2019 17:19:32 +0200 (CEST) From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PULL 1/4] 9p: unsigned type for type, version, path Date: Tue, 8 Oct 2019 17:19:22 +0200 X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191008151925.1021706-1-groug@kaod.org> References: <20191008151925.1021706-1-groug@kaod.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19100815-0008-0000-0000-000003201E66 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19100815-0009-0000-0000-00004A3F2007 Message-Id: <20191008151925.1021706-2-groug@kaod.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-10-08_06:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=824 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1910080135 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 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: Peter Maydell , Christian Schoenebeck , Greg Kurz , Antonios Motakis Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Antonios Motakis There is no need for signedness on these QID fields for 9p. Signed-off-by: Antonios Motakis [CS: - Also make QID type unsigned. - Adjust donttouch_stat() to new types. - Adjust trace-events to new types. ] Signed-off-by: Christian Schoenebeck Signed-off-by: Greg Kurz --- fsdev/9p-marshal.h | 6 +++--- hw/9pfs/9p.c | 6 +++--- hw/9pfs/trace-events | 14 +++++++------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/fsdev/9p-marshal.h b/fsdev/9p-marshal.h index c8823d878f98..8f3babb60a05 100644 --- a/fsdev/9p-marshal.h +++ b/fsdev/9p-marshal.h @@ -9,9 +9,9 @@ typedef struct V9fsString =20 typedef struct V9fsQID { - int8_t type; - int32_t version; - int64_t path; + uint8_t type; + uint32_t version; + uint64_t path; } V9fsQID; =20 typedef struct V9fsStat diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index cce2366219be..cf317bdd2b92 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -744,9 +744,9 @@ static int donttouch_stat(V9fsStat *stat) { if (stat->type =3D=3D -1 && stat->dev =3D=3D -1 && - stat->qid.type =3D=3D -1 && - stat->qid.version =3D=3D -1 && - stat->qid.path =3D=3D -1 && + stat->qid.type =3D=3D 0xff && + stat->qid.version =3D=3D (uint32_t) -1 && + stat->qid.path =3D=3D (uint64_t) -1 && stat->mode =3D=3D -1 && stat->atime =3D=3D -1 && stat->mtime =3D=3D -1 && diff --git a/hw/9pfs/trace-events b/hw/9pfs/trace-events index c0a0a4ab5de8..10188daf7fa5 100644 --- a/hw/9pfs/trace-events +++ b/hw/9pfs/trace-events @@ -6,7 +6,7 @@ v9fs_rerror(uint16_t tag, uint8_t id, int err) "tag %d id %= d err %d" v9fs_version(uint16_t tag, uint8_t id, int32_t msize, char* version) "tag = %d id %d msize %d version %s" v9fs_version_return(uint16_t tag, uint8_t id, int32_t msize, char* version= ) "tag %d id %d msize %d version %s" v9fs_attach(uint16_t tag, uint8_t id, int32_t fid, int32_t afid, char* una= me, char* aname) "tag %u id %u fid %d afid %d uname %s aname %s" -v9fs_attach_return(uint16_t tag, uint8_t id, int8_t type, int32_t version,= int64_t path) "tag %d id %d type %d version %d path %"PRId64 +v9fs_attach_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t versio= n, uint64_t path) "tag %u id %u type %u version %u path %"PRIu64 v9fs_stat(uint16_t tag, uint8_t id, int32_t fid) "tag %d id %d fid %d" v9fs_stat_return(uint16_t tag, uint8_t id, int32_t mode, int32_t atime, in= t32_t mtime, int64_t length) "tag %d id %d stat=3D{mode %d atime %d mtime %= d length %"PRId64"}" v9fs_getattr(uint16_t tag, uint8_t id, int32_t fid, uint64_t request_mask)= "tag %d id %d fid %d request_mask %"PRIu64 @@ -14,9 +14,9 @@ v9fs_getattr_return(uint16_t tag, uint8_t id, uint64_t re= sult_mask, uint32_t mod v9fs_walk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, uint16_t = nwnames) "tag %d id %d fid %d newfid %d nwnames %d" v9fs_walk_return(uint16_t tag, uint8_t id, uint16_t nwnames, void* qids) "= tag %d id %d nwnames %d qids %p" v9fs_open(uint16_t tag, uint8_t id, int32_t fid, int32_t mode) "tag %d id = %d fid %d mode %d" -v9fs_open_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, i= nt64_t path, int iounit) "tag %d id %d qid=3D{type %d version %d path %"PRI= d64"} iounit %d" +v9fs_open_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t version,= uint64_t path, int iounit) "tag %u id %u qid=3D{type %u version %u path %"= PRIu64"} iounit %d" v9fs_lcreate(uint16_t tag, uint8_t id, int32_t dfid, int32_t flags, int32_= t mode, uint32_t gid) "tag %d id %d dfid %d flags %d mode %d gid %u" -v9fs_lcreate_return(uint16_t tag, uint8_t id, int8_t type, int32_t version= , int64_t path, int32_t iounit) "tag %d id %d qid=3D{type %d version %d pat= h %"PRId64"} iounit %d" +v9fs_lcreate_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t versi= on, uint64_t path, int32_t iounit) "tag %u id %u qid=3D{type %u version %u = path %"PRIu64"} iounit %d" v9fs_fsync(uint16_t tag, uint8_t id, int32_t fid, int datasync) "tag %d id= %d fid %d datasync %d" v9fs_clunk(uint16_t tag, uint8_t id, int32_t fid) "tag %d id %d fid %d" v9fs_read(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t ma= x_count) "tag %d id %d fid %d off %"PRIu64" max_count %u" @@ -26,21 +26,21 @@ v9fs_readdir_return(uint16_t tag, uint8_t id, uint32_t = count, ssize_t retval) "t v9fs_write(uint16_t tag, uint8_t id, int32_t fid, uint64_t off, uint32_t c= ount, int cnt) "tag %d id %d fid %d off %"PRIu64" count %u cnt %d" v9fs_write_return(uint16_t tag, uint8_t id, int32_t total, ssize_t err) "t= ag %d id %d total %d err %zd" v9fs_create(uint16_t tag, uint8_t id, int32_t fid, char* name, int32_t per= m, int8_t mode) "tag %d id %d fid %d name %s perm %d mode %d" -v9fs_create_return(uint16_t tag, uint8_t id, int8_t type, int32_t version,= int64_t path, int iounit) "tag %d id %d qid=3D{type %d version %d path %"P= RId64"} iounit %d" +v9fs_create_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t versio= n, uint64_t path, int iounit) "tag %u id %u qid=3D{type %u version %u path = %"PRIu64"} iounit %d" v9fs_symlink(uint16_t tag, uint8_t id, int32_t fid, char* name, char* sym= name, uint32_t gid) "tag %d id %d fid %d name %s symname %s gid %u" -v9fs_symlink_return(uint16_t tag, uint8_t id, int8_t type, int32_t version= , int64_t path) "tag %d id %d qid=3D{type %d version %d path %"PRId64"}" +v9fs_symlink_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t versi= on, uint64_t path) "tag %u id %u qid=3D{type %u version %u path %"PRIu64"}" v9fs_flush(uint16_t tag, uint8_t id, int16_t flush_tag) "tag %d id %d flus= h_tag %d" v9fs_link(uint16_t tag, uint8_t id, int32_t dfid, int32_t oldfid, char* na= me) "tag %d id %d dfid %d oldfid %d name %s" v9fs_remove(uint16_t tag, uint8_t id, int32_t fid) "tag %d id %d fid %d" v9fs_wstat(uint16_t tag, uint8_t id, int32_t fid, int32_t mode, int32_t at= ime, int32_t mtime) "tag %u id %u fid %d stat=3D{mode %d atime %d mtime %d}" v9fs_mknod(uint16_t tag, uint8_t id, int32_t fid, int mode, int major, int= minor) "tag %d id %d fid %d mode %d major %d minor %d" -v9fs_mknod_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, = int64_t path) "tag %d id %d qid=3D{type %d version %d path %"PRId64"}" +v9fs_mknod_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t version= , uint64_t path) "tag %u id %u qid=3D{type %u version %u path %"PRIu64"}" v9fs_lock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t st= art, uint64_t length) "tag %d id %d fid %d type %d start %"PRIu64" length %= "PRIu64 v9fs_lock_return(uint16_t tag, uint8_t id, int8_t status) "tag %d id %d st= atus %d" v9fs_getlock(uint16_t tag, uint8_t id, int32_t fid, uint8_t type, uint64_t= start, uint64_t length)"tag %d id %d fid %d type %d start %"PRIu64" length= %"PRIu64 v9fs_getlock_return(uint16_t tag, uint8_t id, uint8_t type, uint64_t start= , uint64_t length, uint32_t proc_id) "tag %d id %d type %d start %"PRIu64" = length %"PRIu64" proc_id %u" v9fs_mkdir(uint16_t tag, uint8_t id, int32_t fid, char* name, int mode, ui= nt32_t gid) "tag %u id %u fid %d name %s mode %d gid %u" -v9fs_mkdir_return(uint16_t tag, uint8_t id, int8_t type, int32_t version, = int64_t path, int err) "tag %u id %u qid=3D{type %d version %d path %"PRId6= 4"} err %d" +v9fs_mkdir_return(uint16_t tag, uint8_t id, uint8_t type, uint32_t version= , uint64_t path, int err) "tag %u id %u qid=3D{type %u version %u path %"PR= Iu64"} err %d" v9fs_xattrwalk(uint16_t tag, uint8_t id, int32_t fid, int32_t newfid, char= * name) "tag %d id %d fid %d newfid %d name %s" v9fs_xattrwalk_return(uint16_t tag, uint8_t id, int64_t size) "tag %d id %= d size %"PRId64 v9fs_xattrcreate(uint16_t tag, uint8_t id, int32_t fid, char* name, uint64= _t size, int flags) "tag %d id %d fid %d name %s size %"PRIu64" flags %d" --=20 2.21.0 From nobody Thu Mar 28 19:51:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1570548069; cv=none; d=zoho.com; s=zohoarc; b=XzuIF9IwDT5SAjREUGv0YZjXraPKFNKTjLYNE4w4KGEFiUxzlPt+KpP4Wc44IZAQ0QMMSoyLSbOFqK1sAv2pCiuWdzNzj607qzywdGJLyuxQQhxa/o6q/ocl/7OPnG6bffaubAVe6Vue/VD0ORIANiA7R8mhO6ll3eRRZdul+ho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570548069; h=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=dKSrwsFkJjhXI/Lko5NkWmYvvACXgs15s6yVjmZNFdk=; b=k/0Dykk7z8y6AwMfr6Znf/nAEtTonh2M4Jw3zJgYHIBldWgsx+j8JDSnlc/wjc1Eyh3GtVVH2M4Qc2NSuMAbTLV8AWFbL+E3RdhKe/ffYP7+xnGRq7eN4aH9sSuFbl42wg/bWruO0+bVJjiBfGXIeXTbIK5nIhaUkn2fOyukXYQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570548069011711.5318663186014; Tue, 8 Oct 2019 08:21:09 -0700 (PDT) Received: from localhost ([::1]:57338 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrIR-000818-8k for importer@patchew.org; Tue, 08 Oct 2019 11:21:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58295) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrH9-00072N-0R for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHrH6-0000W6-UO for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:46 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:22870) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHrH4-0000SL-Vu for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:44 -0400 Received: from pps.filterd (m0127361.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x98FDQja009108 for ; Tue, 8 Oct 2019 11:19:41 -0400 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0a-001b2d01.pphosted.com with ESMTP id 2vf98hp8qa-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 08 Oct 2019 11:19:40 -0400 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 8 Oct 2019 16:19:37 +0100 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp05.uk.ibm.com (192.168.101.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 8 Oct 2019 16:19:35 +0100 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x98FJYwk44892324 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Oct 2019 15:19:34 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A6172A4057; Tue, 8 Oct 2019 15:19:34 +0000 (GMT) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9313BA4051; Tue, 8 Oct 2019 15:19:34 +0000 (GMT) Received: from smtp.tls.ibm.com (unknown [9.101.4.1]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 8 Oct 2019 15:19:34 +0000 (GMT) Received: from bahia.tls.ibm.com (bahia.tls.ibm.com [9.101.4.41]) by smtp.tls.ibm.com (Postfix) with ESMTP id 5F7472201ED; Tue, 8 Oct 2019 17:19:34 +0200 (CEST) From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PULL 2/4] 9p: Simplify error path of v9fs_device_realize_common() Date: Tue, 8 Oct 2019 17:19:23 +0200 X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191008151925.1021706-1-groug@kaod.org> References: <20191008151925.1021706-1-groug@kaod.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19100815-0020-0000-0000-00000377205A X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19100815-0021-0000-0000-000021CD22CE Message-Id: <20191008151925.1021706-3-groug@kaod.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-10-08_06:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=3 phishscore=0 bulkscore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=509 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1910080135 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 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: Peter Maydell , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" Make v9fs_device_unrealize_common() idempotent and use it for rollback, in order to reduce code duplication. Signed-off-by: Greg Kurz --- hw/9pfs/9p-local.c | 4 ++++ hw/9pfs/9p-proxy.c | 4 ++++ hw/9pfs/9p.c | 16 ++++++---------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c index 08e673a79c22..6f7309f4e691 100644 --- a/hw/9pfs/9p-local.c +++ b/hw/9pfs/9p-local.c @@ -1465,6 +1465,10 @@ static void local_cleanup(FsContext *ctx) { LocalData *data =3D ctx->private; =20 + if (!data) { + return; + } + close(data->mountfd); g_free(data); } diff --git a/hw/9pfs/9p-proxy.c b/hw/9pfs/9p-proxy.c index 57a8c1c80886..97ab9c58a573 100644 --- a/hw/9pfs/9p-proxy.c +++ b/hw/9pfs/9p-proxy.c @@ -1185,6 +1185,10 @@ static void proxy_cleanup(FsContext *ctx) { V9fsProxy *proxy =3D ctx->private; =20 + if (!proxy) { + return; + } + g_free(proxy->out_iovec.iov_base); g_free(proxy->in_iovec.iov_base); if (ctx->export_flags & V9FS_PROXY_SOCK_NAME) { diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index cf317bdd2b92..ba1ab920f1eb 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -3637,27 +3637,23 @@ int v9fs_device_realize_common(V9fsState *s, const = V9fsTransport *t, s->ctx.fst =3D &fse->fst; fsdev_throttle_init(s->ctx.fst); =20 - v9fs_path_free(&path); - rc =3D 0; out: if (rc) { - if (s->ops && s->ops->cleanup && s->ctx.private) { - s->ops->cleanup(&s->ctx); - } - g_free(s->tag); - g_free(s->ctx.fs_root); - v9fs_path_free(&path); + v9fs_device_unrealize_common(s, NULL); } + v9fs_path_free(&path); return rc; } =20 void v9fs_device_unrealize_common(V9fsState *s, Error **errp) { - if (s->ops->cleanup) { + if (s->ops && s->ops->cleanup) { s->ops->cleanup(&s->ctx); } - fsdev_throttle_cleanup(s->ctx.fst); + if (s->ctx.fst) { + fsdev_throttle_cleanup(s->ctx.fst); + } g_free(s->tag); g_free(s->ctx.fs_root); } --=20 2.21.0 From nobody Thu Mar 28 19:51:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1570548207; cv=none; d=zoho.com; s=zohoarc; b=dKMYVRNI3OgIw5kdcfrGekByaUfwmmyNbLJaaB/NLKXFCDl34I4ubZJmlptoM0rFERDcKjl7zF2B+7jd1Yia9kyc5U3K3MuMKuoyMWa0WLCAGjc84xCA1tQmnw8coSTICRVADpqt0dfODXLtfEbAeEWD7mEZdlDC3w9010XkIeE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570548207; h=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=AdOZ/KZNhMw6vwD9zROiHXESQhhi6/1q1laHOTn+tFc=; b=iwGQzqjRCxRjxJNgRodUeUR6jkm4x6rQMbZJSmamulDYgqqU6fSr5QL+ksoIZKsfmuQqFv0zUzcB5amZtBrJ3+FozY3HcHglfDAS8gClwmMmUMhmmZPit0dLcphtPyLYyt5M5t9rBkuDZi1Wi7leszzxHdWflP+udYHmoCe12UA= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1570548207437578.9906351231133; Tue, 8 Oct 2019 08:23:27 -0700 (PDT) Received: from localhost ([::1]:57352 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrKg-0001V3-7d for importer@patchew.org; Tue, 08 Oct 2019 11:23:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58345) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrHA-00074T-OT for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHrH9-0000Xr-0q for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:48 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:55110) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHrH6-0000Sm-Tv for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:46 -0400 Received: from pps.filterd (m0098409.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x98FDTOU129153 for ; Tue, 8 Oct 2019 11:19:42 -0400 Received: from e06smtp01.uk.ibm.com (e06smtp01.uk.ibm.com [195.75.94.97]) by mx0a-001b2d01.pphosted.com with ESMTP id 2vgudvmd3g-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 08 Oct 2019 11:19:42 -0400 Received: from localhost by e06smtp01.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 8 Oct 2019 16:19:39 +0100 Received: from b06cxnps4076.portsmouth.uk.ibm.com (9.149.109.198) by e06smtp01.uk.ibm.com (192.168.101.131) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 8 Oct 2019 16:19:36 +0100 Received: from b06wcsmtp001.portsmouth.uk.ibm.com (b06wcsmtp001.portsmouth.uk.ibm.com [9.149.105.160]) by b06cxnps4076.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x98FJZWH44302578 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Oct 2019 15:19:35 GMT Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 4716BA405F; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from b06wcsmtp001.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 32F3EA4054; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from smtp.tls.ibm.com (unknown [9.101.4.1]) by b06wcsmtp001.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from bahia.tls.ibm.com (bahia.tls.ibm.com [9.101.4.41]) by smtp.tls.ibm.com (Postfix) with ESMTP id F1FB72201ED; Tue, 8 Oct 2019 17:19:34 +0200 (CEST) From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PULL 3/4] fsdev: Add return value to fsdev_throttle_parse_opts() Date: Tue, 8 Oct 2019 17:19:24 +0200 X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191008151925.1021706-1-groug@kaod.org> References: <20191008151925.1021706-1-groug@kaod.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19100815-4275-0000-0000-000003702046 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19100815-4276-0000-0000-0000388321D8 Message-Id: <20191008151925.1021706-4-groug@kaod.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-10-08_06:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=746 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1910080135 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.156.1 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: Peter Maydell , Greg Kurz Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" It is more convenient to use the return value of the function to notify errors, rather than to be tied up setting up the &local_err boilerplate. Signed-off-by: Greg Kurz --- fsdev/qemu-fsdev-throttle.c | 4 ++-- fsdev/qemu-fsdev-throttle.h | 2 +- hw/9pfs/9p-local.c | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/fsdev/qemu-fsdev-throttle.c b/fsdev/qemu-fsdev-throttle.c index fe1d76dc76e7..5c83a1cc09c3 100644 --- a/fsdev/qemu-fsdev-throttle.c +++ b/fsdev/qemu-fsdev-throttle.c @@ -31,7 +31,7 @@ static void fsdev_throttle_write_timer_cb(void *opaque) qemu_co_enter_next(&fst->throttled_reqs[true], NULL); } =20 -void fsdev_throttle_parse_opts(QemuOpts *opts, FsThrottle *fst, Error **er= rp) +int fsdev_throttle_parse_opts(QemuOpts *opts, FsThrottle *fst, Error **err= p) { throttle_config_init(&fst->cfg); fst->cfg.buckets[THROTTLE_BPS_TOTAL].avg =3D @@ -75,7 +75,7 @@ void fsdev_throttle_parse_opts(QemuOpts *opts, FsThrottle= *fst, Error **errp) fst->cfg.op_size =3D qemu_opt_get_number(opts, "throttling.iops-size", 0); =20 - throttle_is_valid(&fst->cfg, errp); + return throttle_is_valid(&fst->cfg, errp) ? 0 : -1; } =20 void fsdev_throttle_init(FsThrottle *fst) diff --git a/fsdev/qemu-fsdev-throttle.h b/fsdev/qemu-fsdev-throttle.h index c98e2feab553..a21aecddc734 100644 --- a/fsdev/qemu-fsdev-throttle.h +++ b/fsdev/qemu-fsdev-throttle.h @@ -26,7 +26,7 @@ typedef struct FsThrottle { CoQueue throttled_reqs[2]; } FsThrottle; =20 -void fsdev_throttle_parse_opts(QemuOpts *, FsThrottle *, Error **); +int fsdev_throttle_parse_opts(QemuOpts *, FsThrottle *, Error **); =20 void fsdev_throttle_init(FsThrottle *); =20 diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c index 6f7309f4e691..5c7f4cd9c7b0 100644 --- a/hw/9pfs/9p-local.c +++ b/hw/9pfs/9p-local.c @@ -1511,8 +1511,7 @@ static int local_parse_opts(QemuOpts *opts, FsDriverE= ntry *fse, Error **errp) return -1; } =20 - fsdev_throttle_parse_opts(opts, &fse->fst, &local_err); - if (local_err) { + if (fsdev_throttle_parse_opts(opts, &fse->fst, &local_err)) { error_propagate_prepend(errp, local_err, "invalid throttle configuration: "); return -1; --=20 2.21.0 From nobody Thu Mar 28 19:51:49 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.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; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org ARC-Seal: i=1; a=rsa-sha256; t=1570548379; cv=none; d=zoho.com; s=zohoarc; b=XN5H2N5sxFzoYQN2zkC8Ppm/NOOyTInJrFL11IOuCfIbr/5xo3TTGn+i2CknK502mkNZ1B5+03/M4WEZNuw7SpvzggGaUY3us+uj1JRpvfB/b1isFaDG6LOrjMBS/9QH/8TrYTb7OHzEelRrSG4pZrUQS2PbKzFNW7nLFBCwp7Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1570548379; h=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=qEK4F143ev3qFWGpfCxXsILQPsLMjW8oEJOhcrgZN1M=; b=L6FbrWZOjyUu07JIH8ajM4WdEifqt2pW/RJ1g3lOSnEELn+UINMRAnyb1+Eb1gnW3p5M7VACYHg8i0eRuImEkyLodCvbTn61ucsiI4l8/5BmPu4XPpBdv6DBJziJQRnmhttVd7oDUklu8JbWgs5gJgdGbyLtYNvZBJNEvD/jOb0= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 157054837983398.47914887539412; Tue, 8 Oct 2019 08:26:19 -0700 (PDT) Received: from localhost ([::1]:57396 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrNK-00040d-K9 for importer@patchew.org; Tue, 08 Oct 2019 11:26:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58358) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iHrHB-00074p-Ai for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:51 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iHrH8-0000Xe-Uf for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:49 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:6972 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iHrH6-0000Ss-Tj for qemu-devel@nongnu.org; Tue, 08 Oct 2019 11:19:46 -0400 Received: from pps.filterd (m0098421.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x98FDSFA070395 for ; Tue, 8 Oct 2019 11:19:41 -0400 Received: from e06smtp02.uk.ibm.com (e06smtp02.uk.ibm.com [195.75.94.98]) by mx0a-001b2d01.pphosted.com with ESMTP id 2vgvk294q2-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 08 Oct 2019 11:19:41 -0400 Received: from localhost by e06smtp02.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 8 Oct 2019 16:19:39 +0100 Received: from b06avi18878370.portsmouth.uk.ibm.com (9.149.26.194) by e06smtp02.uk.ibm.com (192.168.101.132) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Tue, 8 Oct 2019 16:19:36 +0100 Received: from d06av26.portsmouth.uk.ibm.com (d06av26.portsmouth.uk.ibm.com [9.149.105.62]) by b06avi18878370.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id x98FJaft46334414 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 8 Oct 2019 15:19:36 GMT Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id E2816AE04D; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from d06av26.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C40DBAE045; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from smtp.tls.ibm.com (unknown [9.101.4.1]) by d06av26.portsmouth.uk.ibm.com (Postfix) with ESMTP; Tue, 8 Oct 2019 15:19:35 +0000 (GMT) Received: from bahia.tls.ibm.com (bahia.tls.ibm.com [9.101.4.41]) by smtp.tls.ibm.com (Postfix) with ESMTP id 8E45A2201ED; Tue, 8 Oct 2019 17:19:35 +0200 (CEST) From: Greg Kurz To: qemu-devel@nongnu.org Subject: [PULL 4/4] 9p: Treat multiple devices on one export as an error Date: Tue, 8 Oct 2019 17:19:25 +0200 X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191008151925.1021706-1-groug@kaod.org> References: <20191008151925.1021706-1-groug@kaod.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-TM-AS-GCONF: 00 x-cbid: 19100815-0008-0000-0000-000003201E67 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 19100815-0009-0000-0000-00004A3F2009 Message-Id: <20191008151925.1021706-5-groug@kaod.org> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-10-08_06:, , signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=1 phishscore=0 bulkscore=0 spamscore=0 clxscore=1034 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1908290000 definitions=main-1910080135 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [generic] [fuzzy] X-Received-From: 148.163.158.5 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: Peter Maydell , Christian Schoenebeck , Greg Kurz , Antonios Motakis Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Type: text/plain; charset="utf-8" From: Antonios Motakis The QID path should uniquely identify a file. However, the inode of a file is currently used as the QID path, which on its own only uniquely identifies files within a device. Here we track the device hosting the 9pfs share, in order to prevent security issues with QID path collisions from other devices. We only print a warning for now but a subsequent patch will allow users to have finer control over the desired behaviour. Failing the I/O will be one the proposed behaviour, so we also change stat_to_qid() to return an error here in order to keep other patches simpler. Signed-off-by: Antonios Motakis [CS: - Assign dev_id to export root's device already in v9fs_device_realize_common(), not postponed in stat_to_qid(). - error_report_once() if more than one device was shared by export. - Return -ENODEV instead of -ENOSYS in stat_to_qid(). - Fixed typo in log comment. ] Signed-off-by: Christian Schoenebeck [groug, changed to warning, updated message and changelog] Signed-off-by: Greg Kurz --- hw/9pfs/9p.c | 70 +++++++++++++++++++++++++++++++++++++++++----------- hw/9pfs/9p.h | 1 + 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/hw/9pfs/9p.c b/hw/9pfs/9p.c index ba1ab920f1eb..5a895ae0bbfe 100644 --- a/hw/9pfs/9p.c +++ b/hw/9pfs/9p.c @@ -573,10 +573,19 @@ static void coroutine_fn virtfs_reset(V9fsPDU *pdu) P9_STAT_MODE_SOCKET) =20 /* This is the algorithm from ufs in spfs */ -static void stat_to_qid(const struct stat *stbuf, V9fsQID *qidp) +static int stat_to_qid(V9fsPDU *pdu, const struct stat *stbuf, V9fsQID *qi= dp) { size_t size; =20 + if (pdu->s->dev_id !=3D stbuf->st_dev) { + warn_report_once( + "9p: Multiple devices detected in same VirtFS export, " + "which might lead to file ID collisions and severe " + "misbehaviours on guest! You should use a separate " + "export for each device shared from host." + ); + } + memset(&qidp->path, 0, sizeof(qidp->path)); size =3D MIN(sizeof(stbuf->st_ino), sizeof(qidp->path)); memcpy(&qidp->path, &stbuf->st_ino, size); @@ -588,6 +597,8 @@ static void stat_to_qid(const struct stat *stbuf, V9fsQ= ID *qidp) if (S_ISLNK(stbuf->st_mode)) { qidp->type |=3D P9_QID_TYPE_SYMLINK; } + + return 0; } =20 static int coroutine_fn fid_to_qid(V9fsPDU *pdu, V9fsFidState *fidp, @@ -600,7 +611,10 @@ static int coroutine_fn fid_to_qid(V9fsPDU *pdu, V9fsF= idState *fidp, if (err < 0) { return err; } - stat_to_qid(&stbuf, qidp); + err =3D stat_to_qid(pdu, &stbuf, qidp); + if (err < 0) { + return err; + } return 0; } =20 @@ -831,7 +845,10 @@ static int coroutine_fn stat_to_v9stat(V9fsPDU *pdu, V= 9fsPath *path, =20 memset(v9stat, 0, sizeof(*v9stat)); =20 - stat_to_qid(stbuf, &v9stat->qid); + err =3D stat_to_qid(pdu, stbuf, &v9stat->qid); + if (err < 0) { + return err; + } v9stat->mode =3D stat_to_v9mode(stbuf); v9stat->atime =3D stbuf->st_atime; v9stat->mtime =3D stbuf->st_mtime; @@ -892,7 +909,7 @@ static int coroutine_fn stat_to_v9stat(V9fsPDU *pdu, V9= fsPath *path, #define P9_STATS_ALL 0x00003fffULL /* Mask for All fields above = */ =20 =20 -static void stat_to_v9stat_dotl(V9fsState *s, const struct stat *stbuf, +static int stat_to_v9stat_dotl(V9fsPDU *pdu, const struct stat *stbuf, V9fsStatDotl *v9lstat) { memset(v9lstat, 0, sizeof(*v9lstat)); @@ -914,7 +931,7 @@ static void stat_to_v9stat_dotl(V9fsState *s, const str= uct stat *stbuf, /* Currently we only support BASIC fields in stat */ v9lstat->st_result_mask =3D P9_STATS_BASIC; =20 - stat_to_qid(stbuf, &v9lstat->qid); + return stat_to_qid(pdu, stbuf, &v9lstat->qid); } =20 static void print_sg(struct iovec *sg, int cnt) @@ -1116,7 +1133,6 @@ static void coroutine_fn v9fs_getattr(void *opaque) uint64_t request_mask; V9fsStatDotl v9stat_dotl; V9fsPDU *pdu =3D opaque; - V9fsState *s =3D pdu->s; =20 retval =3D pdu_unmarshal(pdu, offset, "dq", &fid, &request_mask); if (retval < 0) { @@ -1137,7 +1153,10 @@ static void coroutine_fn v9fs_getattr(void *opaque) if (retval < 0) { goto out; } - stat_to_v9stat_dotl(s, &stbuf, &v9stat_dotl); + retval =3D stat_to_v9stat_dotl(pdu, &stbuf, &v9stat_dotl); + if (retval < 0) { + goto out; + } =20 /* fill st_gen if requested and supported by underlying fs */ if (request_mask & P9_STATS_GEN) { @@ -1382,7 +1401,10 @@ static void coroutine_fn v9fs_walk(void *opaque) if (err < 0) { goto out; } - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } v9fs_path_copy(&dpath, &path); } memcpy(&qids[name_idx], &qid, sizeof(qid)); @@ -1484,7 +1506,10 @@ static void coroutine_fn v9fs_open(void *opaque) if (err < 0) { goto out; } - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } if (S_ISDIR(stbuf.st_mode)) { err =3D v9fs_co_opendir(pdu, fidp); if (err < 0) { @@ -1594,7 +1619,10 @@ static void coroutine_fn v9fs_lcreate(void *opaque) fidp->flags |=3D FID_NON_RECLAIMABLE; } iounit =3D get_iounit(pdu, &fidp->path); - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } err =3D pdu_marshal(pdu, offset, "Qd", &qid, iounit); if (err < 0) { goto out; @@ -2328,7 +2356,10 @@ static void coroutine_fn v9fs_create(void *opaque) } } iounit =3D get_iounit(pdu, &fidp->path); - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } err =3D pdu_marshal(pdu, offset, "Qd", &qid, iounit); if (err < 0) { goto out; @@ -2385,7 +2416,10 @@ static void coroutine_fn v9fs_symlink(void *opaque) if (err < 0) { goto out; } - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } err =3D pdu_marshal(pdu, offset, "Q", &qid); if (err < 0) { goto out; @@ -3065,7 +3099,10 @@ static void coroutine_fn v9fs_mknod(void *opaque) if (err < 0) { goto out; } - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } err =3D pdu_marshal(pdu, offset, "Q", &qid); if (err < 0) { goto out; @@ -3223,7 +3260,10 @@ static void coroutine_fn v9fs_mkdir(void *opaque) if (err < 0) { goto out; } - stat_to_qid(&stbuf, &qid); + err =3D stat_to_qid(pdu, &stbuf, &qid); + if (err < 0) { + goto out; + } err =3D pdu_marshal(pdu, offset, "Q", &qid); if (err < 0) { goto out; @@ -3634,6 +3674,8 @@ int v9fs_device_realize_common(V9fsState *s, const V9= fsTransport *t, goto out; } =20 + s->dev_id =3D stat.st_dev; + s->ctx.fst =3D &fse->fst; fsdev_throttle_init(s->ctx.fst); =20 diff --git a/hw/9pfs/9p.h b/hw/9pfs/9p.h index 8883761b2c1d..5e316178d579 100644 --- a/hw/9pfs/9p.h +++ b/hw/9pfs/9p.h @@ -256,6 +256,7 @@ struct V9fsState Error *migration_blocker; V9fsConf fsconf; V9fsQID root_qid; + dev_t dev_id; }; =20 /* 9p2000.L open flags */ --=20 2.21.0