| From | Sent On | Attachments |
|---|---|---|
| Roger Hammerstein | Mar 2, 2011 8:46 am | |
| Marius Strobl | Mar 2, 2011 12:02 pm | |
| Marius Strobl | Mar 6, 2011 7:22 am | |
| Roger Hammerstein | Mar 6, 2011 8:27 pm | |
| Marius Strobl | Mar 7, 2011 12:05 am | |
| Marius Strobl | Mar 7, 2011 11:22 am | |
| Roger Hammerstein | Mar 9, 2011 7:02 am | |
| Marius Strobl | Mar 10, 2011 10:54 am | |
| Dimitry Andric | Mar 10, 2011 11:19 am | |
| Marius Strobl | Mar 12, 2011 9:59 am | |
| Marius Strobl | Mar 19, 2011 8:28 am | |
| Michael Moll | Mar 21, 2011 10:55 am | |
| Pawel Jakub Dawidek | Mar 21, 2011 10:59 am | |
| Marius Strobl | Mar 22, 2011 9:07 am | |
| Pawel Jakub Dawidek | Mar 22, 2011 10:04 am | |
| Roger Hammerstein | Mar 22, 2011 10:50 am | |
| Marius Strobl | Mar 22, 2011 12:10 pm | .diff |
| Pawel Jakub Dawidek | Mar 22, 2011 2:13 pm | |
| Roger Hammerstein | Mar 22, 2011 2:38 pm | |
| Michael Moll | Mar 23, 2011 4:23 pm | |
| Martin Matuska | Mar 24, 2011 2:03 am | |
| Marius Strobl | Mar 24, 2011 4:16 am | |
| Michael Moll | Mar 24, 2011 5:35 am | |
| Pawel Jakub Dawidek | Mar 24, 2011 6:22 am | |
| Nathan Whitehorn | Mar 24, 2011 6:35 am | |
| Martin Matuska | Mar 24, 2011 6:37 am | |
| Marius Strobl | Mar 24, 2011 9:35 am | |
| Nathan Whitehorn | Mar 24, 2011 9:48 am | |
| Michael Moll | Mar 25, 2011 8:56 am | |
| Marius Strobl | Mar 26, 2011 7:30 am | |
| Martin Matuska | Mar 27, 2011 3:48 pm | |
| Michael Moll | Mar 28, 2011 7:18 am | |
| Martin Matuska | Apr 6, 2011 1:02 am | |
| Marius Strobl | Apr 6, 2011 2:30 am |
| Subject: | Re: sparc64 hang with zfs v28 | |
|---|---|---|
| From: | Pawel Jakub Dawidek (pj...@FreeBSD.org) | |
| Date: | Mar 24, 2011 6:22:05 am | |
| List: | org.freebsd.freebsd-sparc64 | |
On Thu, Mar 24, 2011 at 12:16:28PM +0100, Marius Strobl wrote:
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 ...
Because on x86 you use copyin(9)/copyout(9) if you are polite. There is nothing that enforce this. I'm happy we have sparc64 to trigger such bugs.
-- Pawel Jakub Dawidek http://www.wheelsystems.com FreeBSD committer http://www.FreeBSD.org Am I Evil? Yes, I Am! http://yomoli.com






.diff