From owner-freebsd-sparc64@FreeBSD.ORG Thu Mar 24 11:16:30 2011 Return-Path: Delivered-To: freebsd-sparc64@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E4D701065673; Thu, 24 Mar 2011 11:16:30 +0000 (UTC) (envelope-from marius@alchemy.franken.de) Received: from alchemy.franken.de (alchemy.franken.de [194.94.249.214]) by mx1.freebsd.org (Postfix) with ESMTP id 7872F8FC16; Thu, 24 Mar 2011 11:16:30 +0000 (UTC) Received: from alchemy.franken.de (localhost [127.0.0.1]) by alchemy.franken.de (8.14.4/8.14.4/ALCHEMY.FRANKEN.DE) with ESMTP id p2OBGT7Q042305; Thu, 24 Mar 2011 12:16:29 +0100 (CET) (envelope-from marius@alchemy.franken.de) Received: (from marius@localhost) by alchemy.franken.de (8.14.4/8.14.4/Submit) id p2OBGSq9042304; Thu, 24 Mar 2011 12:16:28 +0100 (CET) (envelope-from marius) Date: Thu, 24 Mar 2011 12:16:28 +0100 From: Marius Strobl To: Martin Matuska Message-ID: <20110324111628.GO15528@alchemy.franken.de> References: <20110307192239.GA31314@alchemy.franken.de> <20110310185423.GA50419@alchemy.franken.de> <20110319152838.GA8594@alchemy.franken.de> <20110321175632.GA19345@darkthrone.kvedulv.de> <20110321175933.GD2086@garage.freebsd.pl> <20110322191117.GH15528@alchemy.franken.de> <20110323232411.GC82490@darkthrone.kvedulv.de> <4D8B08E1.5060008@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D8B08E1.5060008@FreeBSD.org> User-Agent: Mutt/1.4.2.3i Cc: Roger Hammerstein , pjd@FreeBSD.org, freebsd-sparc64@FreeBSD.org Subject: Re: sparc64 hang with zfs v28 X-BeenThere: freebsd-sparc64@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Porting FreeBSD to the Sparc List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 24 Mar 2011 11:16:31 -0000 On Thu, Mar 24, 2011 at 10:03:29AM +0100, Martin Matuska wrote: > zfs_ioctl_compat_post() calls depending on the ioctl > zfs_ioctl_compat_fix_stats() or zfs_ioctl_compat_pool_get_props() > > Both functions unpack the "zc->zc_nvlist_dst" into "nv" at the very > beginning and I might be missing something here (works very well on > i386/amd64) or there might be a problem elsewhere. > > nvlist_unpack() from libnvpair (nvpair.c) calls nvlist_xunpack(), > issuing a nvlist_xalloc(), followerd by a nvlist_common() in > NVS_OP_DECODE mode - that's where it dies. > nvlist_common() deals directly with endianess. > > sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c > sys/cddl/contrib/opensolaris/common/nvpair/nvpair.c > The code in zfs_ioctl_compat.c just completely misses the copyin()/ copyout() dance. The following patch should fix this, but is compile- tested only so far: http://people.freebsd.org/~marius/zfs_ioctl_compat.c.diff Which still is to be used together with: http://people.freebsd.org/~marius/sunddi.h.diff I'm puzzled as to why these bugs don't cause havoc on x86 ... Marius