View | Details | Raw Unified | Return to bug 251035
Collapse All | Expand All

(-)b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c (+21 lines)
Lines 198-203 Link Here
198
#include <sys/vdev_removal.h>
198
#include <sys/vdev_removal.h>
199
#include <sys/vdev_impl.h>
199
#include <sys/vdev_impl.h>
200
#include <sys/vdev_initialize.h>
200
#include <sys/vdev_initialize.h>
201
#include <sys/sysent.h>
201
202
202
#include "zfs_namecheck.h"
203
#include "zfs_namecheck.h"
203
#include "zfs_prop.h"
204
#include "zfs_prop.h"
Lines 6662-6667 zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t arg, int flag, Link Here
6662
#ifdef illumos
6663
#ifdef illumos
6663
	minor_t minor = getminor(dev);
6664
	minor_t minor = getminor(dev);
6664
#else
6665
#else
6666
#ifdef COMPAT_FREEBSD32
6667
	typedef struct zfs_iocparm32 {
6668
		uint32_t        zfs_ioctl_version;
6669
		uint64_t        zfs_cmd;
6670
		uint64_t        zfs_cmd_size;
6671
        } __packed zfs_iocparm32_t;
6672
	zfs_iocparm_t zc_iocparm64;
6673
#endif
6665
	zfs_iocparm_t *zc_iocparm;
6674
	zfs_iocparm_t *zc_iocparm;
6666
	int cflag, cmd, oldvecnum;
6675
	int cflag, cmd, oldvecnum;
6667
	boolean_t newioc, compat;
6676
	boolean_t newioc, compat;
Lines 6683-6688 zfsdev_ioctl(struct cdev *dev, u_long zcmd, caddr_t arg, int flag, Link Here
6683
	 * Check if we are talking to supported older binaries
6692
	 * Check if we are talking to supported older binaries
6684
	 * and translate zfs_cmd if necessary
6693
	 * and translate zfs_cmd if necessary
6685
	 */
6694
	 */
6695
#ifdef COMPAT_FREEBSD32
6696
	if (SV_PROC_FLAG(td->td_proc, SV_ILP32)) {
6697
		if (len == sizeof(zfs_iocparm32_t)) {
6698
			zfs_iocparm32_t *zc_iocparm32 = (zfs_iocparm32_t*)arg;
6699
			zc_iocparm64.zfs_ioctl_version = zc_iocparm32->zfs_ioctl_version;
6700
			zc_iocparm64.zfs_cmd = zc_iocparm32->zfs_cmd;
6701
			zc_iocparm64.zfs_cmd_size = zc_iocparm32->zfs_cmd_size;
6702
			arg = (caddr_t)&zc_iocparm64;
6703
			len = sizeof(zc_iocparm64);
6704
		}
6705
	}
6706
#endif
6686
	if (len != sizeof(zfs_iocparm_t)) {
6707
	if (len != sizeof(zfs_iocparm_t)) {
6687
		newioc = B_FALSE;
6708
		newioc = B_FALSE;
6688
		compat = B_TRUE;
6709
		compat = B_TRUE;

Return to bug 251035