summaryrefslogtreecommitdiffstats
path: root/sys/ufs
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2012-02-21 01:05:12 +0000
committerkib <kib@FreeBSD.org>2012-02-21 01:05:12 +0000
commit80ae8fe82cdaa69f78dc90fa27bc9e79863de0ea (patch)
treed0d078391c4959fc08545db4ab619daadd9cf1d9 /sys/ufs
parent31a24bc1664a822f3d06595f42063719e6902ff1 (diff)
downloadFreeBSD-src-80ae8fe82cdaa69f78dc90fa27bc9e79863de0ea.zip
FreeBSD-src-80ae8fe82cdaa69f78dc90fa27bc9e79863de0ea.tar.gz
Fix found places where uio_resid is truncated to int.
Add the sysctl debug.iosize_max_clamp, enabled by default. Setting the sysctl to zero allows to perform the SSIZE_MAX-sized i/o requests from the usermode. Discussed with: bde, das (previous versions) MFC after: 1 month
Diffstat (limited to 'sys/ufs')
-rw-r--r--sys/ufs/ffs/ffs_vnops.c12
-rw-r--r--sys/ufs/ufs/ufs_lookup.c3
2 files changed, 10 insertions, 5 deletions
diff --git a/sys/ufs/ffs/ffs_vnops.c b/sys/ufs/ffs/ffs_vnops.c
index 333f447..4783f65 100644
--- a/sys/ufs/ffs/ffs_vnops.c
+++ b/sys/ufs/ffs/ffs_vnops.c
@@ -420,7 +420,8 @@ ffs_read(ap)
ufs_lbn_t lbn, nextlbn;
off_t bytesinfile;
long size, xfersize, blkoffset;
- int error, orig_resid;
+ ssize_t orig_resid;
+ int error;
int seqcount;
int ioflag;
@@ -633,8 +634,9 @@ ffs_write(ap)
struct buf *bp;
ufs_lbn_t lbn;
off_t osize;
+ ssize_t resid;
int seqcount;
- int blkoffset, error, flags, ioflag, resid, size, xfersize;
+ int blkoffset, error, flags, ioflag, size, xfersize;
vp = ap->a_vp;
uio = ap->a_uio;
@@ -871,7 +873,8 @@ ffs_extread(struct vnode *vp, struct uio *uio, int ioflag)
ufs_lbn_t lbn, nextlbn;
off_t bytesinfile;
long size, xfersize, blkoffset;
- int error, orig_resid;
+ ssize_t orig_resid;
+ int error;
ip = VTOI(vp);
fs = ip->i_fs;
@@ -1024,7 +1027,8 @@ ffs_extwrite(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *ucred)
struct buf *bp;
ufs_lbn_t lbn;
off_t osize;
- int blkoffset, error, flags, resid, size, xfersize;
+ ssize_t resid;
+ int blkoffset, error, flags, size, xfersize;
ip = VTOI(vp);
fs = ip->i_fs;
diff --git a/sys/ufs/ufs/ufs_lookup.c b/sys/ufs/ufs/ufs_lookup.c
index 391b3e9..56ca058 100644
--- a/sys/ufs/ufs/ufs_lookup.c
+++ b/sys/ufs/ufs/ufs_lookup.c
@@ -1337,7 +1337,8 @@ ufs_dirempty(ip, parentino, cred)
doff_t off;
struct dirtemplate dbuf;
struct direct *dp = (struct direct *)&dbuf;
- int error, count, namlen;
+ int error, namlen;
+ ssize_t count;
#define MINDIRSIZ (sizeof (struct dirtemplate) / 2)
for (off = 0; off < ip->i_size; off += dp->d_reclen) {
OpenPOWER on IntegriCloud