Mercurial > unleashed > wips
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 */