From nobody Thu Feb 03 02:58:20 2022 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id A786319A8FC7; Thu, 3 Feb 2022 02:58:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Jq3JX4JYCz4kX9; Thu, 3 Feb 2022 02:58:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643857100; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Oz1f9ygRBB32/UtDrz5Orr1xq9Crhbu2bQkYQBY8Bo4=; b=RPYenVmFs6Rp7Au1AR8N3tYtII50+0sY1OnZbJMWUSraWRk8qrNPQx9EDbwHvpvBHhMz2K lTrJVmRD+UGRQn/25bc9iNJT43v3/IBdJu06OT8A+Q3cEV5vbWQZdQaQ+f4TkW/qZukfNv ZTpd+g3dFfRmB3XFO1tMwG+Di5WCNow2CWW3+O1jdwlCpJ3tjKAm9ZZOW3ZOHvP0N0M3Ps OSQL5aGKrIZZm7FXTRSxnPtB2rPH9j4DnPofWV0obPohmwwLjYNoAHk7NfKmNpsH/eE+++ 5HdMXJ9209T2kZO2UHUpfG0KWbL6IQUdtJlIbQxF/wpKSK7etqsau/+u00QjaQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 70260102F7; Thu, 3 Feb 2022 02:58:20 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2132wKnI000465; Thu, 3 Feb 2022 02:58:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2132wKks000464; Thu, 3 Feb 2022 02:58:20 GMT (envelope-from git) Date: Thu, 3 Feb 2022 02:58:20 GMT Message-Id: <202202030258.2132wKks000464@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Jason A. Harmening" Subject: git: 0cd8f3e958a5 - main - unionfs: fix assertion order in unionfs_lock() List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jah X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 0cd8f3e958a514588af85f5aa6ef3d0526b4d4f0 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1643857100; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Oz1f9ygRBB32/UtDrz5Orr1xq9Crhbu2bQkYQBY8Bo4=; b=QV/gPSSxW7JkTf+tTbmtGWhYTr79AogZZovapU9G0AkJgvMk/LKOIpxAeHv7TKdvJhImBB F3wKnryEpKWpR/pU+WO/TtwAb1B0kSn+/vbxFEjwGsge/os3VzIBve3Db5HkSiTeUJvchi dhwzFO0Agp2akvSkAeNbqpLJ5/gZkZP4C0ADt7EbEOgWMcK71p3+BuWTqkv/1+z4E7AXDc vOOzvZKDJKYeb6kQdSlCDStgYmeT0rbXdT3gM9QXmFLZx2AOReXDLni9rnkNwgHHYgf0Ad rM5AI2MsuYLfZFNk4mvgmo4UnEfuhEvufluXsmykFcFi/135ktHAHxDFhPY8jg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1643857100; a=rsa-sha256; cv=none; b=UDk0oEF6F4xOnkWfCEhGaWv0fKLgMc+Qx2SKFGIIKfOLPFmJp9NkKFG8ktuaExqNgY/0Lj 0p7/CRDTweRuVWJXaoDbPa0DvnftHXzVVP9RewAQwh96AOZY9yvg9vFNPQBF5UdeI9Zcgc +LAtTf9fLZWdHcqz89BFsI0KESohMWIyMunKQEIDIbrSKIv+fiOuGHPurtKWy51F7JBib2 Tlbc4/kf+Q6oqebTFqTUYTdRsLob1Op3+U3EV2QeeKacsOg9yJtFx/lnuB0Eg4dBCx0jSu UnUZwBFuHMNRAwN6pIJ035JpLdMyZaMIw9DMwFgblaniZy9W2W2XFDC/DQTJvA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jah: URL: https://cgit.FreeBSD.org/src/commit/?id=0cd8f3e958a514588af85f5aa6ef3d0526b4d4f0 commit 0cd8f3e958a514588af85f5aa6ef3d0526b4d4f0 Author: Jason A. Harmening AuthorDate: 2022-01-30 20:43:19 +0000 Commit: Jason A. Harmening CommitDate: 2022-02-03 03:08:17 +0000 unionfs: fix assertion order in unionfs_lock() VOP_LOCK() may be handed a vnode that is concurrently reclaimed. unionfs_lock() accounts for this by checking for empty vnode private data under the interlock. But it incorrectly asserts that the vnode is using the unionfs dispatch table before making this check. Reverse the order, and also update KASSERT_UNIONFS_VNODE() to provide more useful information. Reported by: pho Reviewed by: kib, markj, pho Differential Revision: https://reviews.freebsd.org/D34109 --- sys/fs/unionfs/union_vnops.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sys/fs/unionfs/union_vnops.c b/sys/fs/unionfs/union_vnops.c index c9d8aac12362..43378f709df7 100644 --- a/sys/fs/unionfs/union_vnops.c +++ b/sys/fs/unionfs/union_vnops.c @@ -76,8 +76,8 @@ #endif #define KASSERT_UNIONFS_VNODE(vp) \ - KASSERT(((vp)->v_op == &unionfs_vnodeops), \ - ("unionfs: it is not unionfs-vnode")) + VNASSERT(((vp)->v_op == &unionfs_vnodeops), vp, \ + ("%s: non-unionfs vnode", __func__)) static int unionfs_lookup(struct vop_cachedlookup_args *ap) @@ -1918,8 +1918,6 @@ unionfs_lock(struct vop_lock1_args *ap) int interlock; int uhold; - KASSERT_UNIONFS_VNODE(ap->a_vp); - /* * TODO: rework the unionfs locking scheme. * It's not guaranteed to be safe to blindly lock two vnodes on @@ -1945,6 +1943,9 @@ unionfs_lock(struct vop_lock1_args *ap) unp = VTOUNIONFS(vp); if (unp == NULL) goto unionfs_lock_null_vnode; + + KASSERT_UNIONFS_VNODE(ap->a_vp); + lvp = unp->un_lowervp; uvp = unp->un_uppervp;