From 926e106e807e180f532ed962b0b90d19e1f54daa Mon Sep 17 00:00:00 2001 From: pjd Date: Sat, 5 Nov 2011 16:29:03 +0000 Subject: [PATCH] In zvol_open() if the spa_namespace_lock is already held, it means that ZFS is trying to open and taste ZVOL as its VDEV. This is not supported, so return an error instead of panicing on spa_namespace_lock recursion. Reported by: Robert Millan PR: kern/162008 MFC after: 3 days --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c index a14a9fe5858b..6eec4558d024 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c +++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c @@ -875,6 +875,14 @@ zvol_open(struct g_provider *pp, int flag, int count) zvol_state_t *zv; int err = 0; + if (MUTEX_HELD(&spa_namespace_lock)) { + /* + * If the spa_namespace_lock is being held, it means that ZFS + * is trying to open ZVOL as its VDEV. This i not supported. + */ + return (EOPNOTSUPP); + } + mutex_enter(&spa_namespace_lock); zv = pp->private;