On Tue, Feb 02, 2016 at 07:30:08PM +0100, Stefan Kempf wrote:
> Looks good. I agree with changing left to size_t. One small remark
> though: size_t is defined as unsigned long. Do the DPRINTFs that print
> the value of left have to be changed to use %zu in the format string?
Said DDPRINTFs are in functions not touched by the diff, where 'left' is
a cn_t. However, this got me thinking: The current code is a wild mix of
off_t, cn_t and size_t variables for 'left' and the chunk size values
('tocopy', 'toread' and 'towrite').
Please see the diff below. In addition to the uiomove() change, it also
unifies the code in ntfs_subr.c to consistently make use of the size_t
type for aforementioned variables. Note, that the upper bound is a
variable called 'rsize' (a size_t) in all those cases.
natano
Index: ntfs/ntfs_subr.c
===================================================================
RCS file: /cvs/src/sys/ntfs/ntfs_subr.c,v
retrieving revision 1.44
diff -u -p -u -r1.44 ntfs_subr.c
--- ntfs/ntfs_subr.c 14 Mar 2015 03:38:52 -0000 1.44
+++ ntfs/ntfs_subr.c 2 Feb 2016 20:09:53 -0000
@@ -1340,7 +1340,8 @@ ntfs_writeattr_plain(struct ntfsmount *n
{
size_t init;
int error = 0;
- off_t off = roff, left = rsize, towrite;
+ off_t off = roff;
+ size_t left = rsize, towrite;
caddr_t data = rdata;
struct ntvattr *vap;
*initp = 0;
@@ -1351,7 +1352,7 @@ ntfs_writeattr_plain(struct ntfsmount *n
if (error)
return (error);
towrite = MIN(left, ntfs_cntob(vap->va_vcnend + 1) - off);
- DDPRINTF("ntfs_writeattr_plain: o: %lld, s: %lld "
+ DDPRINTF("ntfs_writeattr_plain: o: %lld, s: %zu "
"(%llu - %llu)\n", off, towrite,
vap->va_vcnstart, vap->va_vcnend);
error = ntfs_writentvattr_plain(ntmp, ip, vap,
@@ -1359,11 +1360,9 @@ ntfs_writeattr_plain(struct ntfsmount *n
towrite, data, &init, uio);
if (error) {
DPRINTF("ntfs_writeattr_plain: ntfs_writentvattr_plain "
- "failed: o: %d, s: %d\n",
- (u_int32_t)off, (u_int32_t)towrite);
- DPRINTF("ntfs_writeattr_plain: attrib: %d - %d\n",
- (u_int32_t)vap->va_vcnstart,
- (u_int32_t)vap->va_vcnend);
+ "failed: o: %lld, s: %zu\n", off, towrite);
+ DPRINTF("ntfs_writeattr_plain: attrib: %llu - %llu\n",
+ vap->va_vcnstart, vap->va_vcnend);
ntfs_ntvattrrele(vap);
break;
}
@@ -1390,10 +1389,10 @@ ntfs_writentvattr_plain(struct ntfsmount
int error = 0;
off_t off;
int cnt;
- cn_t ccn, ccl, cn, left, cl;
+ cn_t ccn, ccl, cn, cl;
caddr_t data = rdata;
struct buf *bp;
- size_t tocopy;
+ size_t left, tocopy;
*initp = 0;
@@ -1414,7 +1413,7 @@ ntfs_writentvattr_plain(struct ntfsmount
ccn = vap->va_vruncn[cnt];
ccl = vap->va_vruncl[cnt];
- DDPRINTF("ntfs_writentvattr_plain: left %llu, cn: 0x%llx, "
+ DDPRINTF("ntfs_writentvattr_plain: left %zu, cn: 0x%llx, "
"cl: %llu, off: %lld\n", left, ccn, ccl, off);
if (ntfs_cntob(ccl) < off) {
@@ -1440,7 +1439,7 @@ ntfs_writentvattr_plain(struct ntfsmount
cl = ntfs_btocl(tocopy + off);
KASSERT(cl == 1 && tocopy <= ntfs_cntob(1));
DDPRINTF("ntfs_writentvattr_plain: write: cn: 0x%llx "
- "cl: %llu, off: %lld len: %llu, left: %llu\n",
+ "cl: %llu, off: %lld len: %zu, left: %zu\n",
cn, cl, off, tocopy, left);
if ((off == 0) && (tocopy == ntfs_cntob(cl)))
{
@@ -1456,7 +1455,7 @@ ntfs_writentvattr_plain(struct ntfsmount
}
}
if (uio) {
- error = uiomovei(bp->b_data + off, tocopy, uio);
+ error = uiomove(bp->b_data + off, tocopy, uio);
if (error != 0)
break;
} else
@@ -1495,10 +1494,10 @@ ntfs_readntvattr_plain(struct ntfsmount
*initp = 0;
if (vap->va_flag & NTFS_AF_INRUN) {
int cnt;
- cn_t ccn, ccl, cn, left, cl;
+ cn_t ccn, ccl, cn, cl;
caddr_t data = rdata;
struct buf *bp;
- size_t tocopy;
+ size_t left, tocopy;
DDPRINTF("ntfs_readntvattr_plain: data in run: %lu chains\n",
vap->va_vruncnt);
@@ -1512,7 +1511,7 @@ ntfs_readntvattr_plain(struct ntfsmount
ccn = vap->va_vruncn[cnt];
ccl = vap->va_vruncl[cnt];
- DDPRINTF("ntfs_readntvattr_plain: left %llu, "
+ DDPRINTF("ntfs_readntvattr_plain: left %zu, "
"cn: 0x%llx, cl: %llu, off: %lld\n",
left, ccn, ccl, off);
@@ -1542,8 +1541,8 @@ ntfs_readntvattr_plain(struct ntfsmount
DDPRINTF("ntfs_readntvattr_plain: "
"read: cn: 0x%llx cl: %llu, "
- "off: %lld, len: %llu, "
- "left: %llu\n",
+ "off: %lld, len: %zu, "
+ "left: %zu\n",
cn, cl, off, tocopy, left);
error = bread(ntmp->ntm_devvp,
ntfs_cntobn(cn),
@@ -1554,7 +1553,7 @@ ntfs_readntvattr_plain(struct ntfsmount
return (error);
}
if (uio) {
- error = uiomovei(bp->b_data +
off,
+ error = uiomove(bp->b_data +
off,
tocopy, uio);
if (error != 0)
break;
@@ -1574,7 +1573,7 @@ ntfs_readntvattr_plain(struct ntfsmount
tocopy = MIN(left, ntfs_cntob(ccl) - off);
DDPRINTF("ntfs_readntvattr_plain: hole: "
"ccn: 0x%llx ccl: %llu, off: %lld, "
- "len: %llu, left: %llu\n",
+ "len: %zu, left: %zu\n",
ccn, ccl, off, tocopy, left);
left -= tocopy;
off = 0;
@@ -1600,7 +1599,7 @@ ntfs_readntvattr_plain(struct ntfsmount
} else {
DDPRINTF("ntfs_readnvattr_plain: data is in mft record\n");
if (uio)
- error = uiomovei(vap->va_datap + roff, rsize, uio);
+ error = uiomove(vap->va_datap + roff, rsize, uio);
else
memcpy(rdata, vap->va_datap + roff, rsize);
*initp += rsize;
@@ -1619,7 +1618,8 @@ ntfs_readattr_plain(struct ntfsmount *nt
{
size_t init;
int error = 0;
- off_t off = roff, left = rsize, toread;
+ off_t off = roff;
+ size_t left = rsize, toread;
caddr_t data = rdata;
struct ntvattr *vap;
*initp = 0;
@@ -1630,19 +1630,17 @@ ntfs_readattr_plain(struct ntfsmount *nt
if (error)
return (error);
toread = MIN(left, ntfs_cntob(vap->va_vcnend + 1) - off);
- DDPRINTF("ntfs_readattr_plain: o: %lld, s: %lld "
+ DDPRINTF("ntfs_readattr_plain: o: %lld, s: %zu "
"(%llu - %llu)\n", off, toread,
vap->va_vcnstart, vap->va_vcnend);
error = ntfs_readntvattr_plain(ntmp, ip, vap,
off - ntfs_cntob(vap->va_vcnstart),
toread, data, &init, uio);
if (error) {
- printf("ntfs_readattr_plain: " \
- "ntfs_readntvattr_plain failed: o: %d, s: %d\n",
- (u_int32_t) off, (u_int32_t) toread);
- printf("ntfs_readattr_plain: attrib: %d - %d\n",
- (u_int32_t) vap->va_vcnstart,
- (u_int32_t) vap->va_vcnend);
+ printf("ntfs_readattr_plain: ntfs_readntvattr_plain "
+ "failed: o: %lld, s: %zu\n", off, toread);
+ printf("ntfs_readattr_plain: attrib: %llu - %llu\n",
+ vap->va_vcnstart, vap->va_vcnend);
ntfs_ntvattrrele(vap);
break;
}
@@ -1684,9 +1682,10 @@ ntfs_readattr(struct ntfsmount *ntmp, st
if (vap->va_compression && vap->va_compressalg) {
u_int8_t *cup;
u_int8_t *uup;
- off_t off = roff, left = rsize, tocopy;
+ off_t off = roff;
caddr_t data = rdata;
cn_t cn;
+ size_t left = rsize, tocopy;
DDPRINTF("ntfs_ntreadattr: compression: %u\n",
vap->va_compressalg);
@@ -1711,7 +1710,7 @@ ntfs_readattr(struct ntfsmount *ntmp, st
if (init == ntfs_cntob(NTFS_COMPUNIT_CL)) {
if (uio)
- error = uiomovei(cup + off, tocopy,
uio);
+ error = uiomove(cup + off, tocopy, uio);
else
memcpy(data, cup + off, tocopy);
} else if (init == 0) {
@@ -1730,7 +1729,7 @@ ntfs_readattr(struct ntfsmount *ntmp, st
if (error)
break;
if (uio)
- error = uiomovei(uup + off, tocopy,
uio);
+ error = uiomove(uup + off, tocopy, uio);
else
memcpy(data, uup + off, tocopy);
}