From owner-freebsd-bugs@FreeBSD.ORG Sun Apr 4 11:20:11 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 784611065674 for ; Sun, 4 Apr 2010 11:20:11 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id D41D48FC22 for ; Sun, 4 Apr 2010 11:20:09 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id o34BK9pE063893 for ; Sun, 4 Apr 2010 11:20:09 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id o34BK9Pa063892; Sun, 4 Apr 2010 11:20:09 GMT (envelope-from gnats) Resent-Date: Sun, 4 Apr 2010 11:20:09 GMT Resent-Message-Id: <201004041120.o34BK9Pa063892@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Martin Matuska Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D267106567C for ; Sun, 4 Apr 2010 11:19:59 +0000 (UTC) (envelope-from mm@mail2.vx.sk) Received: from mail2.vx.sk (neo.vx.sk [188.40.111.84]) by mx1.freebsd.org (Postfix) with ESMTP id 0E0E48FC0C for ; Sun, 4 Apr 2010 11:19:58 +0000 (UTC) Received: from neo.vx.sk (localhost [127.0.0.1]) by mail2.vx.sk (Postfix) with ESMTP id 9727129BDE for ; Sun, 4 Apr 2010 13:19:57 +0200 (CEST) Received: from mail2.vx.sk ([127.0.0.1]) by neo.vx.sk (neo.vx.sk [127.0.0.1]) (amavisd-new, port 10024) with LMTP id AY3XpsphFVkI for ; Sun, 4 Apr 2010 13:19:52 +0200 (CEST) Received: by mail2.vx.sk (Postfix, from userid 1001) id AD74529BBD; Sun, 4 Apr 2010 13:19:52 +0200 (CEST) Message-Id: <20100404111952.AD74529BBD@mail2.vx.sk> Date: Sun, 4 Apr 2010 13:19:52 +0200 (CEST) From: Martin Matuska To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: kern/145377: [zfs] [patch] fix zfs bug (vendor import) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Martin Matuska List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2010 11:20:11 -0000 >Number: 145377 >Category: kern >Synopsis: [zfs] [patch] fix zfs bug (vendor import) >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Apr 04 11:20:09 UTC 2010 >Closed-Date: >Last-Modified: >Originator: Martin Matuska >Release: FreeBSD 8.0-RELEASE-p2 amd64 >Organization: >Environment: System: FreeBSD neo.vx.sk 8.0-RELEASE-p2 FreeBSD 8.0-RELEASE-p2 #16: Fri Jan 15 21:10:48 CET 2010 root@neo.vx.sk:/usr/obj/usr/src/sys/NEO amd64 >Description: As reported by Andriy Gapon via e-mail: " It seems that this commit causes a crash in zfs(1) when e.g. 'zfs list' is executed and one of the filesystems has a user property set on it. The crash is in zfs_prune_proplist function at cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c:4291. " The issue has been fixed in OpenSolaris onnv-gate revision 9396. An associated OpenSolaris bug-id cannot be determined. Solution: partial vendor import of OpenSolaris rev. 9396 (just the bugfix) References: http://src.opensolaris.org/source/diff/onnv/onnv-gate/usr/src/lib/libzfs/common/libzfs_dataset.c?r2=%252Fonnv%252Fonnv-gate%252Fusr%252Fsrc%252Flib%252Flibzfs%252Fcommon%252Flibzfs_dataset.c%409396%3Af41cf682d0d3&r1=%252Fonnv%252Fonnv-gate%252Fusr%252Fsrc%252Flib%252Flibzfs%252Fcommon%252Flibzfs_dataset.c%408845%3A91af0d9c0790 >How-To-Repeat: >Fix: @@ -4488,7 +3934,12 @@ zfs_prop_t zfs_prop = zfs_name_to_prop(nvpair_name(curr)); nvpair_t *next = nvlist_next_nvpair(zhp->zfs_props, curr); - if (props[zfs_prop] == B_FALSE) + /* + * We leave user:props in the nvlist, so there will be + * some ZPROP_INVAL. To be extra safe, don't prune + * those. + */ + if (zfs_prop != ZPROP_INVAL && props[zfs_prop] == B_FALSE) (void) nvlist_remove(zhp->zfs_props, nvpair_name(curr), nvpair_type(curr)); curr = next; >Release-Note: >Audit-Trail: >Unformatted: