FreeBSD Bugzilla – Attachment 219540 Details for
Bug 251035
ZFS: Allow 64 bit ZFS to support 32 bit ioctls (Wine)
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
convert 32 bit zfs_iocparm_t to 64 bit
zfs-ioctl-compat32.patch (text/plain), 1.62 KB, created by
Damjan Jovanovic
on 2020-11-11 06:35:59 UTC
(
hide
)
Description:
convert 32 bit zfs_iocparm_t to 64 bit
Filename:
MIME Type:
Creator:
Damjan Jovanovic
Created:
2020-11-11 06:35:59 UTC
Size:
1.62 KB
patch
obsolete
>diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c >index 5a4cd90ea73..b1aea455321 100644 >--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c >+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c >@@ -198,6 +198,7 @@ > #include <sys/vdev_removal.h> > #include <sys/vdev_impl.h> > #include <sys/vdev_initialize.h> >+#include <sys/sysent.h> > > #include "zfs_namecheck.h" > #include "zfs_prop.h" >@@ -6662,6 +6663,14 @@ zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t arg, int flag, > #ifdef illumos > minor_t minor = getminor(dev); > #else >+#ifdef COMPAT_FREEBSD32 >+ typedef struct zfs_iocparm32 { >+ uint32_t zfs_ioctl_version; >+ uint64_t zfs_cmd; >+ uint64_t zfs_cmd_size; >+ } __packed zfs_iocparm32_t; >+ zfs_iocparm_t zc_iocparm64; >+#endif > zfs_iocparm_t *zc_iocparm; > int cflag, cmd, oldvecnum; > boolean_t newioc, compat; >@@ -6683,6 +6692,18 @@ zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t arg, int flag, > * Check if we are talking to supported older binaries > * and translate zfs_cmd if necessary > */ >+#ifdef COMPAT_FREEBSD32 >+ if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) { >+ if (len == sizeof(zfs_iocparm32_t)) { >+ zfs_iocparm32_t *zc_iocparm32 = (zfs_iocparm32_t*)arg; >+ zc_iocparm64.zfs_ioctl_version = zc_iocparm32->zfs_ioctl_version; >+ zc_iocparm64.zfs_cmd = zc_iocparm32->zfs_cmd; >+ zc_iocparm64.zfs_cmd_size = zc_iocparm32->zfs_cmd_size; >+ arg = (caddr_t)&zc_iocparm64; >+ len = sizeof(zc_iocparm64); >+ } >+ } >+#endif > if (len != sizeof(zfs_iocparm_t)) { > newioc = B_FALSE; > compat = B_TRUE;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 251035
: 219540