changeset 20492:de7089a86deb

abolish off32_t 32-bit processes already had 64 bits long off_t, so off32_t was actually wrong in some struct definitions.
author Lauri Tirkkonen <lotheac@iki.fi>
date Wed, 13 Mar 2019 19:33:34 +0200
parents 125a26b87613
children 9952eec3a1cd
files arch/x86/include/sys/old_procfs.h include/sys/dirent.h include/sys/fcntl.h include/sys/param.h include/sys/procfs.h include/sys/sendfile.h include/sys/stat.h include/sys/swap.h include/sys/types32.h kernel/fs/nfs/nfs3_srv.c kernel/fs/nfs/nfs4_srv_attr.c kernel/fs/nfs/nfs4_srv_readdir.c kernel/fs/nfs/nfs_log.c kernel/fs/nfs/nfs_srv.c kernel/fs/nfs/nfs_vnops.c kernel/fs/proc/prioctl.c kernel/fs/ufs/ufs_alloc.c kernel/fs/ufs/ufs_directio.c kernel/fs/ufs/ufs_extvnops.c kernel/fs/ufs/ufs_inode.c kernel/fs/ufs/ufs_vnops.c kernel/os/acct.c kernel/syscall/fcntl.c kernel/syscall/lseek.c kernel/syscall/rlimit.c kernel/syscall/sendfile.c kernel/syscall/stat.c kernel/vm/vm_swap.c
diffstat 28 files changed, 67 insertions(+), 112 deletions(-) [+]
line wrap: on
line diff
--- a/arch/x86/include/sys/old_procfs.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/arch/x86/include/sys/old_procfs.h	Wed Mar 13 19:33:34 2019 +0200
@@ -539,7 +539,7 @@
 typedef struct ioc_prmap32 {
 	caddr32_t	pr_vaddr;	/* Virtual address */
 	size32_t	pr_size;	/* Size of mapping in bytes */
-	off32_t		pr_off;		/* Offset into mapped object, if any */
+	int32_t		pr_off;		/* Offset into mapped object, if any */
 	uint32_t	pr_mflags;	/* Protection and attribute flags */
 	uint32_t	pr_pagesize;	/* pagesize (bytes) for this mapping */
 	int32_t		pr_filler[3];	/* Filler for future expansion */
@@ -587,7 +587,7 @@
 typedef struct ioc_prasmap32 {
 	caddr32_t	pr_vaddr;	/* virtual address */
 	size32_t	pr_npage;	/* number of pages in mapping */
-	off32_t		pr_off;		/* offset into mapped object, if any */
+	int32_t		pr_off;		/* offset into mapped object, if any */
 	uint32_t	pr_mflags;	/* protection and attribute flags */
 	uint32_t	pr_pagesize;	/* pagesize (bytes) for this mapping */
 	int32_t		pr_filler[3];	/* filler for future expansion */
--- a/include/sys/dirent.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/dirent.h	Wed Mar 13 19:33:34 2019 +0200
@@ -54,7 +54,7 @@
 
 typedef	struct dirent32 {
 	ino32_t		d_ino;		/* "inode number" of entry */
-	off32_t		d_off;		/* offset of disk directory entry */
+	off_t		d_off;		/* offset of disk directory entry */
 	uint16_t	d_reclen;	/* length of this record */
 	char		d_name[1];	/* name of file */
 } dirent32_t;
--- a/include/sys/fcntl.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/fcntl.h	Wed Mar 13 19:33:34 2019 +0200
@@ -295,8 +295,8 @@
 typedef struct flock32 {
 	int16_t	l_type;
 	int16_t	l_whence;
-	off32_t	l_start;
-	off32_t	l_len;		/* len == 0 means until end of file */
+	off_t	l_start;
+	off_t	l_len;		/* len == 0 means until end of file */
 	int32_t	l_sysid;
 	pid32_t	l_pid;
 	int32_t	l_pad[4];		/* reserve area */
--- a/include/sys/param.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/param.h	Wed Mar 13 19:33:34 2019 +0200
@@ -250,9 +250,6 @@
 #define	DEV_BSIZE	512
 #define	DEV_BSHIFT	9		/* log2(DEV_BSIZE) */
 #define	MAXFRAG 	8
-#ifdef	_SYSCALL32
-#define	MAXOFF32_T	0x7fffffff
-#endif
 #define	MAXOFF_T	0x7fffffffffffffffLL
 #define	MAXOFFSET_T	MAXOFF_T
 
--- a/include/sys/procfs.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/procfs.h	Wed Mar 13 19:33:34 2019 +0200
@@ -791,9 +791,9 @@
  * _ILP32 PCREAD/PCWRITE I/O interface.
  */
 typedef struct priovec32 {
-	caddr32_t pio_base;	/* buffer in controlling process */
-	size32_t pio_len;	/* size of read/write request */
-	off32_t	pio_offset;	/* virtual address in target process */
+	caddr32_t	pio_base;	/* buffer in controlling process */
+	size32_t	pio_len;	/* size of read/write request */
+	uint32_t	pio_offset;	/* virtual address in target process */
 } priovec32_t;
 
 /*
--- a/include/sys/sendfile.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/sendfile.h	Wed Mar 13 19:33:34 2019 +0200
@@ -70,7 +70,7 @@
 typedef struct ksendfilevec32 {
 	int		sfv_fd;
 	uint_t		sfv_flag;
-	off32_t		sfv_off;
+	off_t		sfv_off;
 	size32_t	sfv_len;
 } ksendfilevec32_t;
 
--- a/include/sys/stat.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/stat.h	Wed Mar 13 19:33:34 2019 +0200
@@ -253,7 +253,7 @@
 	gid32_t		st_gid;
 	dev32_t		st_rdev;
 	int32_t		st_pad2[2];
-	off32_t		st_size;
+	off_t		st_size;
 	int32_t		st_pad3;
 	timestruc32_t	st_atim;
 	timestruc32_t	st_mtim;
--- a/include/sys/swap.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/swap.h	Wed Mar 13 19:33:34 2019 +0200
@@ -83,14 +83,14 @@
 
 typedef struct swapres32 {
 	caddr32_t sr_name;	/* pathname of the resource specified */
-	off32_t	sr_start;	/* starting offset of the swapping resource */
-	off32_t	sr_length;	/* length of the swap area */
+	off_t	sr_start;	/* starting offset of the swapping resource */
+	off_t	sr_length;	/* length of the swap area */
 } swapres32_t;
 
 typedef struct swapent32 {
 	caddr32_t ste_path;	/* get the name of the swap file */
-	off32_t	ste_start;	/* starting block for swapping */
-	off32_t	ste_length;	/* length of swap area */
+	off_t	ste_start;	/* starting block for swapping */
+	off_t	ste_length;	/* length of swap area */
 	int32_t	ste_pages;	/* numbers of pages for swapping */
 	int32_t	ste_free;	/* numbers of ste_pages free */
 	int32_t	ste_flags;	/* see below */
--- a/include/sys/types32.h	Tue Mar 12 01:52:48 2019 +0200
+++ b/include/sys/types32.h	Wed Mar 13 19:33:34 2019 +0200
@@ -46,7 +46,6 @@
  */
 typedef	uint32_t	caddr32_t;
 typedef	int32_t		daddr32_t;
-typedef	int32_t		off32_t;
 typedef	uint32_t	ino32_t;
 typedef	int32_t		blkcnt32_t;
 typedef uint32_t	fsblkcnt32_t;
--- a/kernel/fs/nfs/nfs3_srv.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs3_srv.c	Wed Mar 13 19:33:34 2019 +0200
@@ -3522,7 +3522,7 @@
 	 * _PC_FILESIZEBITS.
 	 */
 	if (l == (ulong_t)-1) {
-		resp->resok.maxfilesize = MAXOFF32_T;
+		resp->resok.maxfilesize = MAXOFF_T;
 	} else {
 		if (l >= (sizeof (uint64_t) * 8))
 			resp->resok.maxfilesize = INT64_MAX;
--- a/kernel/fs/nfs/nfs4_srv_attr.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs4_srv_attr.c	Wed Mar 13 19:33:34 2019 +0200
@@ -1700,7 +1700,7 @@
 		 * file system does not support _PC_FILESIZEBITS.
 		 */
 		if (val == (ulong_t)-1) {
-			na->maxfilesize = MAXOFF32_T;
+			na->maxfilesize = MAXOFF_T;
 		} else {
 			if (val >= (sizeof (uint64_t) * 8))
 				na->maxfilesize = INT64_MAX;
@@ -1727,7 +1727,7 @@
 		 * file system does not support _PC_FILESIZEBITS.
 		 */
 		if (val == (ulong_t)-1) {
-			maxfilesize = MAXOFF32_T;
+			maxfilesize = MAXOFF_T;
 		} else {
 			if (val >= (sizeof (uint64_t) * 8))
 				maxfilesize = INT64_MAX;
--- a/kernel/fs/nfs/nfs4_srv_readdir.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs4_srv_readdir.c	Wed Mar 13 19:33:34 2019 +0200
@@ -265,7 +265,7 @@
 		 * file system does not support _PC_FILESIZEBITS.
 		 */
 		if (pc_val == (ulong_t)-1) {
-			pce->maxfilesize = MAXOFF32_T;
+			pce->maxfilesize = MAXOFF_T;
 		} else {
 			if (pc_val >= (sizeof (uint64_t) * 8))
 				pce->maxfilesize = INT64_MAX;
--- a/kernel/fs/nfs/nfs_log.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs_log.c	Wed Mar 13 19:33:34 2019 +0200
@@ -825,7 +825,7 @@
 
 	(void) fop_rwlock(vp, V_WRITELOCK_TRUE, NULL);  /* UIO_WRITE */
 	if ((error = fop_getattr(vp, &va, 0, CRED(), NULL)) == 0) {
-		if ((len + va.va_size) < (MAXOFF32_T)) {
+		if ((len + va.va_size) < (INT32_MAX)) {
 			error = fop_write(vp, &uio, ioflag, CRED(), NULL);
 			fop_rwunlock(vp, V_WRITELOCK_TRUE, NULL);
 			if (uio.uio_resid)
--- a/kernel/fs/nfs/nfs_srv.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs_srv.c	Wed Mar 13 19:33:34 2019 +0200
@@ -2800,21 +2800,7 @@
 	if (vap->va_nodeid != (u_longlong_t)na->na_nodeid)
 		return (EFBIG);
 	na->na_nlink = vap->va_nlink;
-
-	/*
-	 * Check for big files here, instead of at the caller.  See
-	 * comments in cstat for large special file explanation.
-	 */
-	if (vap->va_size > (u_longlong_t)MAXOFF32_T) {
-		if ((vap->va_type == VREG) || (vap->va_type == VDIR))
-			return (EFBIG);
-		if ((vap->va_type == VBLK) || (vap->va_type == VCHR)) {
-			/* UNKNOWN_SIZE | OVERFLOW */
-			na->na_size = MAXOFF32_T;
-		} else
-			na->na_size = vap->va_size;
-	} else
-		na->na_size = vap->va_size;
+	na->na_size = vap->va_size;
 
 	/*
 	 * If the vnode times overflow the 32-bit times that NFS2
--- a/kernel/fs/nfs/nfs_vnops.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/nfs/nfs_vnops.c	Wed Mar 13 19:33:34 2019 +0200
@@ -435,11 +435,11 @@
 	if (uiop->uio_resid == 0)
 		return (0);
 
-	if (uiop->uio_loffset > MAXOFF32_T)
+	if (uiop->uio_loffset > INT32_MAX)
 		return (EFBIG);
 
 	if (uiop->uio_loffset < 0 ||
-	    uiop->uio_loffset + uiop->uio_resid > MAXOFF32_T)
+	    uiop->uio_loffset + uiop->uio_resid > INT32_MAX)
 		return (EINVAL);
 
 	/*
@@ -589,16 +589,16 @@
 		uiop->uio_loffset = va.va_size;
 	}
 
-	if (uiop->uio_loffset > MAXOFF32_T)
+	if (uiop->uio_loffset > INT32_MAX)
 		return (EFBIG);
 
 	offset = uiop->uio_loffset + uiop->uio_resid;
 
-	if (uiop->uio_loffset < 0 || offset > MAXOFF32_T)
+	if (uiop->uio_loffset < 0 || offset > INT32_MAX)
 		return (EINVAL);
 
-	if (uiop->uio_llimit > (rlim_t)MAXOFF32_T) {
-		limit = MAXOFF32_T;
+	if (uiop->uio_llimit > (rlim_t)INT32_MAX) {
+		limit = INT32_MAX;
 	} else {
 		limit = (rlim_t)uiop->uio_llimit;
 	}
@@ -1149,7 +1149,7 @@
 
 	if ((mask & VATTR_SIZE) &&
 	    vap->va_type == VREG &&
-	    vap->va_size > MAXOFF32_T)
+	    vap->va_size > INT32_MAX)
 		return (EFBIG);
 
 	if (nfs_zone() != VTOMI(vp)->mi_zone)
@@ -3599,7 +3599,7 @@
 	 */
 	if (vp->v_type == VDIR)
 		return (0);
-	if (*noffp < 0 || *noffp > MAXOFF32_T)
+	if (*noffp < 0 || *noffp > INT32_MAX)
 		return (EINVAL);
 	return (0);
 }
@@ -3630,7 +3630,7 @@
 	if (vp->v_flag & VNOMAP)
 		return (ENOSYS);
 
-	ASSERT(off <= MAXOFF32_T);
+	ASSERT(off <= INT32_MAX);
 	if (nfs_zone() != VTOMI(vp)->mi_zone)
 		return (EIO);
 	if (protp != NULL)
@@ -4090,7 +4090,7 @@
 
 	if (!(flags & B_ASYNC) && nfs_zone() != VTOMI(vp)->mi_zone)
 		return (EIO);
-	ASSERT(off <= MAXOFF32_T);
+	ASSERT(off <= INT32_MAX);
 
 	rp = VTOR(vp);
 	mutex_enter(&rp->r_statelock);
@@ -4128,7 +4128,7 @@
 	rp = VTOR(vp);
 	ASSERT(rp->r_count > 0);
 
-	ASSERT(pp->p_offset <= MAXOFF32_T);
+	ASSERT(pp->p_offset <= INT32_MAX);
 
 	bsize = MAX(vp->v_vfsp->vfs_bsize, PAGESIZE);
 	lbn = pp->p_offset / bsize;
@@ -4306,7 +4306,7 @@
 	if (vp->v_flag & VNOMAP)
 		return (ENOSYS);
 
-	if (off > MAXOFF32_T)
+	if (off > INT32_MAX)
 		return (EFBIG);
 
 	if (off < 0 || off + len < 0)
@@ -4462,7 +4462,7 @@
 	/* check the validity of the lock range */
 	if (rc = flk_convert_lock_data(vp, bfp, &start, &end, offset))
 		return (rc);
-	if (rc = flk_check_lock_data(start, end, MAXOFF32_T))
+	if (rc = flk_check_lock_data(start, end, INT32_MAX))
 		return (rc);
 
 	/*
@@ -4470,7 +4470,7 @@
 	 * request off to the local locking code.
 	 */
 	if (VTOMI(vp)->mi_flags & MI_LLOCK) {
-		if (offset > MAXOFF32_T)
+		if (offset > INT32_MAX)
 			return (EFBIG);
 		if (cmd == F_SETLK || cmd == F_SETLKW) {
 			/*
@@ -4586,11 +4586,11 @@
 	if (cmd != F_FREESP)
 		return (EINVAL);
 
-	if (offset > MAXOFF32_T)
+	if (offset > INT32_MAX)
 		return (EFBIG);
 
-	if ((bfp->l_start > MAXOFF32_T) || (bfp->l_end > MAXOFF32_T) ||
-	    (bfp->l_len > MAXOFF32_T))
+	if ((bfp->l_start > INT32_MAX) || (bfp->l_end > INT32_MAX) ||
+	    (bfp->l_len > INT32_MAX))
 		return (EFBIG);
 
 	if (nfs_zone() != VTOMI(vp)->mi_zone)
@@ -4933,7 +4933,7 @@
 	if (pp == NULL)
 		return (EINVAL);
 
-	if (io_off > MAXOFF32_T)
+	if (io_off > INT32_MAX)
 		return (EFBIG);
 	if (nfs_zone() != VTOMI(vp)->mi_zone)
 		return (EIO);
--- a/kernel/fs/proc/prioctl.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/proc/prioctl.c	Wed Mar 13 19:33:34 2019 +0200
@@ -3593,7 +3593,7 @@
 
 			mp->pr_vaddr = (caddr32_t)(uintptr_t)saddr;
 			mp->pr_size = (size32_t)(naddr - saddr);
-			mp->pr_off = (off32_t)segop_getoffset(seg, saddr);
+			mp->pr_off = (off_t)segop_getoffset(seg, saddr);
 			mp->pr_mflags = 0;
 			if (prot & PROT_READ)
 				mp->pr_mflags |= MA_READ;
--- a/kernel/fs/ufs/ufs_alloc.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/ufs/ufs_alloc.c	Wed Mar 13 19:33:34 2019 +0200
@@ -1786,7 +1786,7 @@
 	 * in superblock to indicate this, if it
 	 * is not already set.
 	 */
-	if ((ip->i_size > MAXOFF32_T) &&
+	if ((ip->i_size > INT32_MAX) &&
 	    !(fs->fs_flags & FSLARGEFILES)) {
 		ASSERT(ufsvfsp->vfs_lfflags & UFS_LARGEFILES);
 		mutex_enter(&ufsvfsp->vfs_lock);
--- a/kernel/fs/ufs/ufs_directio.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/ufs/ufs_directio.c	Wed Mar 13 19:33:34 2019 +0200
@@ -559,7 +559,7 @@
 		 * if file has grown larger than 2GB, set flag
 		 * in superblock if not already set
 		 */
-		if ((ip->i_size > MAXOFF32_T) &&
+		if ((ip->i_size > INT32_MAX) &&
 		    !(fs->fs_flags & FSLARGEFILES)) {
 			ASSERT(ufsvfsp->vfs_lfflags & UFS_LARGEFILES);
 			mutex_enter(&ufsvfsp->vfs_lock);
--- a/kernel/fs/ufs/ufs_extvnops.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/ufs/ufs_extvnops.c	Wed Mar 13 19:33:34 2019 +0200
@@ -395,7 +395,7 @@
 			 * in superblock to indicate this, if it
 			 * is not already set.
 			 */
-			if ((ip->i_size > MAXOFF32_T) &&
+			if ((ip->i_size > INT32_MAX) &&
 			    !(fs->fs_flags & FSLARGEFILES)) {
 				ASSERT(ufsvfsp->vfs_lfflags & UFS_LARGEFILES);
 				mutex_enter(&ufsvfsp->vfs_lock);
--- a/kernel/fs/ufs/ufs_inode.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/ufs/ufs_inode.c	Wed Mar 13 19:33:34 2019 +0200
@@ -1170,7 +1170,7 @@
 	struct inode tip;
 	int err;
 	uoff_t maxoffset = (ufsvfsp->vfs_lfflags & UFS_LARGEFILES) ?
-	    (UFS_MAXOFFSET_T) : (MAXOFF32_T);
+	    (UFS_MAXOFFSET_T) : (INT32_MAX);
 
 	/*
 	 * Shadow inodes do not need to hold the vfs_dqrwlock lock. Most
@@ -1275,13 +1275,13 @@
 			oip->i_seq++;
 			ITIMES_NOLOCK(oip);
 			/*
-			 * MAXOFF32_T is old 2GB size limit. If
+			 * INT32_MAX is old 2GB size limit. If
 			 * this operation caused a large file to be
 			 * created, turn on the superblock flag
 			 * and update the superblock, if the flag
 			 * is not already on.
 			 */
-			if ((length > (uoff_t)MAXOFF32_T) &&
+			if ((length > (uoff_t)INT32_MAX) &&
 			    !(fs->fs_flags & FSLARGEFILES)) {
 				ASSERT(ufsvfsp->vfs_lfflags & UFS_LARGEFILES);
 				mutex_enter(&ufsvfsp->vfs_lock);
--- a/kernel/fs/ufs/ufs_vnops.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/fs/ufs/ufs_vnops.c	Wed Mar 13 19:33:34 2019 +0200
@@ -804,7 +804,7 @@
 	if (ufsvfsp->vfs_lfflags & UFS_LARGEFILES)
 		limit = MIN(UFS_MAXOFFSET_T, limit);
 	else
-		limit = MIN(MAXOFF32_T, limit);
+		limit = MIN(INT32_MAX, limit);
 
 	if (uio->uio_loffset < 0) {
 		return (EINVAL);
@@ -1088,7 +1088,7 @@
 			 * in superblock to indicate this, if it
 			 * is not already set.
 			 */
-			if ((ip->i_size > MAXOFF32_T) &&
+			if ((ip->i_size > INT32_MAX) &&
 			    !(fs->fs_flags & FSLARGEFILES)) {
 				ASSERT(ufsvfsp->vfs_lfflags & UFS_LARGEFILES);
 				mutex_enter(&ufsvfsp->vfs_lock);
@@ -3910,7 +3910,7 @@
 	ip = VTOI(vp);
 	ASSERT(RW_READ_HELD(&ip->i_rwlock));
 
-	if (uiop->uio_loffset >= MAXOFF32_T) {
+	if (uiop->uio_loffset >= INT32_MAX) {
 		if (eofp)
 			*eofp = 1;
 		return (0);
@@ -3941,7 +3941,7 @@
 
 	/* Large Files: directory files should not be "large" */
 
-	ASSERT(ip->i_size <= MAXOFF32_T);
+	ASSERT(ip->i_size <= INT32_MAX);
 
 	/* Force offset to be valid (to guard against bogus lseek() values) */
 	offset = (uint_t)uiop->uio_offset & ~(DIRBLKSIZ - 1);
@@ -4060,7 +4060,7 @@
 
 	/*
 	 * Large Files: casting i_size to int here is not a problem
-	 * because directory sizes are always less than MAXOFF32_T.
+	 * because directory sizes are always less than INT32_MAX.
 	 * See assertion above.
 	 */
 
--- a/kernel/os/acct.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/os/acct.c	Wed Mar 13 19:33:34 2019 +0200
@@ -433,7 +433,7 @@
 	if (fop_getattr(vp, &va, 0, kcred, NULL) == 0) {
 		error = vn_rdwr(UIO_WRITE, vp, (caddr_t)&ag->acctbuf,
 		    sizeof (ag->acctbuf), 0LL, UIO_SYSSPACE, FAPPEND,
-		    (rlim_t)MAXOFF32_T, kcred, &resid);
+		    (rlim_t)INT32_MAX, kcred, &resid);
 		if (error || resid)
 			(void) fop_setattr(vp, &va, 0, kcred, NULL);
 	}
--- a/kernel/syscall/fcntl.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/syscall/fcntl.c	Wed Mar 13 19:33:34 2019 +0200
@@ -256,7 +256,7 @@
 	datamodel = DATAMODEL_NATIVE;
 #if defined(_SYSCALL32_IMPL)
 	if ((datamodel = get_udatamodel()) == DATAMODEL_ILP32)
-		maxoffset = MAXOFF32_T;
+		maxoffset = INT32_MAX;
 #endif
 
 	vp = fp->f_vnode;
@@ -470,8 +470,8 @@
 #if defined(_SYSCALL32_IMPL)
 			else {
 				struct flock32 sbf32;
-				if (bf.l_start > MAXOFF32_T ||
-				    bf.l_len > MAXOFF32_T) {
+				if (bf.l_start > INT32_MAX ||
+				    bf.l_len > INT32_MAX) {
 					error = EOVERFLOW;
 					break;
 				}
@@ -479,8 +479,8 @@
 					sbf32.l_pad[i] = 0;
 				sbf32.l_type = (int16_t)bf.l_type;
 				sbf32.l_whence = (int16_t)bf.l_whence;
-				sbf32.l_start = (off32_t)bf.l_start;
-				sbf32.l_len = (off32_t)bf.l_len;
+				sbf32.l_start = (off_t)bf.l_start;
+				sbf32.l_len = (off_t)bf.l_len;
 				sbf32.l_sysid = (int32_t)bf.l_sysid;
 				sbf32.l_pid = (pid32_t)bf.l_pid;
 				if (copyout(&sbf32,
--- a/kernel/syscall/lseek.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/syscall/lseek.c	Wed Mar 13 19:33:34 2019 +0200
@@ -65,13 +65,9 @@
  *
  * 'max' represents the maximum possible representation of offset
  * in the data type corresponding to lseek and llseek. It is
- * MAXOFF32_T for off32_t and MAXOFFSET_T for off64_t.
+ * MAXOFF_T for off_t.
  * We return EOVERFLOW if we cannot represent the resulting offset
  * in the data type.
- * We provide support for character devices to be seeked beyond MAXOFF32_T
- * by lseek. To maintain compatibility in such cases lseek passes
- * the arguments carefully to lseek_common when file is not regular.
- * (/dev/kmem is a good example of a > 2Gbyte seek!)
  */
 static int
 lseek32_common(file_t *fp, int stype, offset_t off, offset_t max,
--- a/kernel/syscall/rlimit.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/syscall/rlimit.c	Wed Mar 13 19:33:34 2019 +0200
@@ -77,8 +77,8 @@
 			 * so that applications that do not check errors
 			 * continue to work.
 			 */
-			if (filesize > MAXOFF32_T)
-				filesize = MAXOFF32_T;
+			if (filesize > INT32_MAX)
+				filesize = INT32_MAX;
 			retval = ((int)filesize >> SCTRSHFT);
 		} else
 			retval = filesize >> SCTRSHFT;
--- a/kernel/syscall/sendfile.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/syscall/sendfile.c	Wed Mar 13 19:33:34 2019 +0200
@@ -404,9 +404,9 @@
 #ifdef _SYSCALL32_IMPL
 	model_t model = get_udatamodel();
 	uoff_t maxoff = (model == DATAMODEL_ILP32) ?
-	    MAXOFF32_T : MAXOFFSET_T;
+	    INT32_MAX : MAXOFFSET_T;
 #else
-	const uoff_t maxoff = MAXOFF32_T;
+	const uoff_t maxoff = INT32_MAX;
 #endif
 	mblk_t *dmp = NULL;
 	int wroff;
@@ -694,9 +694,9 @@
 #ifdef _SYSCALL32_IMPL
 	model_t model = get_udatamodel();
 	uoff_t maxoff = (model == DATAMODEL_ILP32) ?
-	    MAXOFF32_T : MAXOFFSET_T;
+	    INT32_MAX : MAXOFFSET_T;
 #else
-	const uoff_t maxoff = MAXOFF32_T;
+	const uoff_t maxoff = INT32_MAX;
 #endif
 	mblk_t	*dmp = NULL;
 	char	*buf = NULL;
--- a/kernel/syscall/stat.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/syscall/stat.c	Wed Mar 13 19:33:34 2019 +0200
@@ -185,29 +185,6 @@
 	vattr.va_mask = VATTR_STAT | VATTR_NBLOCKS | VATTR_BLKSIZE | VATTR_SIZE;
 	if ((error = fop_getattr(vp, &vattr, flag, cr, NULL)) != 0)
 		return (error);
-#ifdef	_ILP32
-	/*
-	 * (32-bit kernel, 32-bit applications, 32-bit files)
-	 * NOTE: 32-bit kernel maintains a 64-bit unsigend va_size.
-	 *
-	 * st_size of devices (VBLK and VCHR special files) is a special case.
-	 * POSIX does not define size behavior for special files, so the
-	 * following Solaris specific behavior is not a violation. Solaris
-	 * returns the size of the device.
-	 *
-	 * For compatibility with 32-bit programs which happen to do stat() on
-	 * a (mknod) bigger than 2GB we suppress the large file EOVERFLOW and
-	 * instead we return the value MAXOFF32_T (LONG_MAX).
-	 *
-	 * 32-bit applications that care about the size of devices should be
-	 * built 64-bit or use a large file interface (lfcompile(5) or lf64(5)).
-	 */
-	if ((vattr.va_size > MAXOFF32_T) &&
-	    ((vp->v_type == VBLK) || (vp->v_type == VCHR))) {
-		/* OVERFLOW | UNKNOWN_SIZE */
-		vattr.va_size = MAXOFF32_T;
-	}
-#endif	/* _ILP32 */
 	if (vattr.va_size > MAXOFF_T || vattr.va_nblocks > LONG_MAX ||
 	    vattr.va_nodeid > ULONG_MAX)
 		return (EOVERFLOW);
--- a/kernel/vm/vm_swap.c	Tue Mar 12 01:52:48 2019 +0200
+++ b/kernel/vm/vm_swap.c	Wed Mar 13 19:33:34 2019 +0200
@@ -1162,16 +1162,16 @@
 #ifdef	_ILP32
 	/*
 	 * No support for large swap in 32-bit OS, if the size of the swap is
-	 * bigger than MAXOFF32_T then the size used by swapfs must be limited.
+	 * bigger than INT32_MAX then the size used by swapfs must be limited.
 	 * This limitation is imposed by the swap subsystem itself, a D_64BIT
 	 * driver as the target of swap operation should be able to field
 	 * the IO.
 	 */
-	if (vattr.va_size > MAXOFF32_T) {
+	if (vattr.va_size > INT32_MAX) {
 		cmn_err(CE_NOTE,
 		    "!swap device %s truncated from 0x%llx to 0x%x bytes",
-		    swapname, vattr.va_size, MAXOFF32_T);
-		vattr.va_size = MAXOFF32_T;
+		    swapname, vattr.va_size, INT32_MAX);
+		vattr.va_size = INT32_MAX;
 	}
 #endif	/* _ILP32 */