atom feed34 messages in org.freebsd.freebsd-sparc64Re: sparc64 hang with zfs v28
FromSent OnAttachments
Roger HammersteinMar 2, 2011 8:46 am 
Marius StroblMar 2, 2011 12:02 pm 
Marius StroblMar 6, 2011 7:22 am 
Roger HammersteinMar 6, 2011 8:27 pm 
Marius StroblMar 7, 2011 12:05 am 
Marius StroblMar 7, 2011 11:22 am 
Roger HammersteinMar 9, 2011 7:02 am 
Marius StroblMar 10, 2011 10:54 am 
Dimitry AndricMar 10, 2011 11:19 am 
Marius StroblMar 12, 2011 9:59 am 
Marius StroblMar 19, 2011 8:28 am 
Michael MollMar 21, 2011 10:55 am 
Pawel Jakub DawidekMar 21, 2011 10:59 am 
Marius StroblMar 22, 2011 9:07 am 
Pawel Jakub DawidekMar 22, 2011 10:04 am 
Roger HammersteinMar 22, 2011 10:50 am 
Marius StroblMar 22, 2011 12:10 pm.diff
Pawel Jakub DawidekMar 22, 2011 2:13 pm 
Roger HammersteinMar 22, 2011 2:38 pm 
Michael MollMar 23, 2011 4:23 pm 
Martin MatuskaMar 24, 2011 2:03 am 
Marius StroblMar 24, 2011 4:16 am 
Michael MollMar 24, 2011 5:35 am 
Pawel Jakub DawidekMar 24, 2011 6:22 am 
Nathan WhitehornMar 24, 2011 6:35 am 
Martin MatuskaMar 24, 2011 6:37 am 
Marius StroblMar 24, 2011 9:35 am 
Nathan WhitehornMar 24, 2011 9:48 am 
Michael MollMar 25, 2011 8:56 am 
Marius StroblMar 26, 2011 7:30 am 
Martin MatuskaMar 27, 2011 3:48 pm 
Michael MollMar 28, 2011 7:18 am 
Martin MatuskaApr 6, 2011 1:02 am 
Marius StroblApr 6, 2011 2:30 am 
Subject:Re: sparc64 hang with zfs v28
From:Marius Strobl (mar@alchemy.franken.de)
Date:Mar 24, 2011 4:16:02 am
List:org.freebsd.freebsd-sparc64

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