Page MenuHomeFreeBSD

D33404.id100079.diff
No OneTemporary

D33404.id100079.diff

Index: share/man/man9/VOP_READDIR.9
===================================================================
--- share/man/man9/VOP_READDIR.9
+++ share/man/man9/VOP_READDIR.9
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd March 30, 2020
+.Dd December 13, 2021
.Dt VOP_READDIR 9
.Os
.Sh NAME
@@ -39,7 +39,7 @@
.In sys/dirent.h
.In sys/vnode.h
.Ft int
-.Fn VOP_READDIR "struct vnode *vp" "struct uio *uio" "struct ucred *cred" "int *eofflag" "int *ncookies" "u_long **cookies"
+.Fn VOP_READDIR "struct vnode *vp" "struct uio *uio" "struct ucred *cred" "int *eofflag" "int *ncookies" "uint64_t **cookies"
.Sh DESCRIPTION
Read directory entries.
.Bl -tag -width ncookies
@@ -92,7 +92,7 @@
.Bd -literal
...;
*ncookies = number of entries read;
- *cookies = malloc(*ncookies * sizeof(u_long), M_TEMP, M_WAITOK);
+ *cookies = malloc(*ncookies * sizeof(**cookies), M_TEMP, M_WAITOK);
.Ed
.Sh ERRORS
.Bl -tag -width Er
Index: sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c
===================================================================
--- sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c
+++ sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c
@@ -1665,7 +1665,7 @@
/* ARGSUSED */
static int
zfs_readdir(vnode_t *vp, zfs_uio_t *uio, cred_t *cr, int *eofp,
- int *ncookies, ulong_t **cookies)
+ int *ncookies, uint64_t **cookies)
{
znode_t *zp = VTOZ(vp);
iovec_t *iovp;
@@ -1687,7 +1687,7 @@
boolean_t check_sysattrs;
uint8_t type;
int ncooks;
- ulong_t *cooks = NULL;
+ uint64_t *cooks = NULL;
int flags = 0;
ZFS_ENTER(zfsvfs);
@@ -1764,7 +1764,7 @@
*/
ncooks = zfs_uio_resid(uio) / (sizeof (struct dirent) -
sizeof (((struct dirent *)NULL)->d_name) + 1);
- cooks = malloc(ncooks * sizeof (ulong_t), M_TEMP, M_WAITOK);
+ cooks = malloc(ncooks * sizeof (*cooks), M_TEMP, M_WAITOK);
*cookies = cooks;
*ncookies = ncooks;
}
@@ -4720,7 +4720,7 @@
struct ucred *a_cred;
int *a_eofflag;
int *a_ncookies;
- ulong_t **a_cookies;
+ uint64_t **a_cookies;
};
#endif
Index: sys/fs/cd9660/cd9660_vnops.c
===================================================================
--- sys/fs/cd9660/cd9660_vnops.c
+++ sys/fs/cd9660/cd9660_vnops.c
@@ -367,7 +367,7 @@
struct uio *uio;
off_t uio_off;
int eofflag;
- u_long *cookies;
+ uint64_t *cookies;
int ncookies;
};
@@ -464,7 +464,7 @@
struct ucred *a_cred;
int *a_eofflag;
int *a_ncookies;
- u_long **a_cookies;
+ uint64_t **a_cookies;
} */ *ap;
{
struct uio *uio = ap->a_uio;
@@ -481,7 +481,7 @@
int reclen;
u_short namelen;
u_int ncookies = 0;
- u_long *cookies = NULL;
+ uint64_t *cookies = NULL;
cd_ino_t ino;
dp = VTOI(vdp);
@@ -504,8 +504,7 @@
* Guess the number of cookies needed.
*/
ncookies = uio->uio_resid / 16;
- cookies = malloc(ncookies * sizeof(u_long),
- M_TEMP, M_WAITOK);
+ cookies = malloc(ncookies * sizeof(*cookies), M_TEMP, M_WAITOK);
idp->cookies = cookies;
idp->ncookies = ncookies;
}
Index: sys/fs/ext2fs/ext2_lookup.c
===================================================================
--- sys/fs/ext2fs/ext2_lookup.c
+++ sys/fs/ext2fs/ext2_lookup.c
@@ -155,7 +155,7 @@
struct buf *bp;
struct inode *ip;
struct ext2fs_direct_2 *dp, *edp;
- u_long *cookies;
+ uint64_t *cookies;
struct dirent dstdp;
off_t offset, startoffset;
size_t readcnt, skipcnt;
Index: sys/fs/fuse/fuse_internal.h
===================================================================
--- sys/fs/fuse/fuse_internal.h
+++ sys/fs/fuse/fuse_internal.h
@@ -252,10 +252,10 @@
};
int fuse_internal_readdir(struct vnode *vp, struct uio *uio, off_t startoff,
struct fuse_filehandle *fufh, struct fuse_iov *cookediov, int *ncookies,
- u_long *cookies);
+ uint64_t *cookies);
int fuse_internal_readdir_processdata(struct uio *uio, off_t startoff,
int *fnd_start, size_t reqsize, void *buf, size_t bufsize,
- struct fuse_iov *cookediov, int *ncookies, u_long **cookiesp);
+ struct fuse_iov *cookediov, int *ncookies, uint64_t **cookiesp);
/* remove */
Index: sys/fs/fuse/fuse_internal.c
===================================================================
--- sys/fs/fuse/fuse_internal.c
+++ sys/fs/fuse/fuse_internal.c
@@ -559,7 +559,7 @@
struct fuse_filehandle *fufh,
struct fuse_iov *cookediov,
int *ncookies,
- u_long *cookies)
+ uint64_t *cookies)
{
int err = 0;
struct fuse_dispatcher fdi;
@@ -625,7 +625,7 @@
size_t bufsize,
struct fuse_iov *cookediov,
int *ncookies,
- u_long **cookiesp)
+ uint64_t **cookiesp)
{
int err = 0;
int oreclen;
@@ -633,7 +633,7 @@
struct dirent *de;
struct fuse_dirent *fudge;
- u_long *cookies;
+ uint64_t *cookies;
cookies = *cookiesp;
if (bufsize < FUSE_NAME_OFFSET)
Index: sys/fs/fuse/fuse_vnops.c
===================================================================
--- sys/fs/fuse/fuse_vnops.c
+++ sys/fs/fuse/fuse_vnops.c
@@ -1730,7 +1730,7 @@
struct ucred *a_cred;
int *a_eofflag;
int *a_ncookies;
- u_long **a_cookies;
+ uint64_t **a_cookies;
};
*/
static int
@@ -1742,7 +1742,7 @@
struct fuse_filehandle *fufh = NULL;
struct fuse_iov cookediov;
int err = 0;
- u_long *cookies;
+ uint64_t *cookies;
off_t startoff;
ssize_t tresid;
int ncookies;
Index: sys/fs/msdosfs/msdosfs_vnops.c
===================================================================
--- sys/fs/msdosfs/msdosfs_vnops.c
+++ sys/fs/msdosfs/msdosfs_vnops.c
@@ -1517,7 +1517,7 @@
struct direntry *dentp;
struct dirent dirbuf;
struct uio *uio = ap->a_uio;
- u_long *cookies = NULL;
+ uint64_t *cookies = NULL;
int ncookies = 0;
off_t offset, off;
int chksum = -1;
@@ -1553,7 +1553,7 @@
if (ap->a_ncookies) {
ncookies = uio->uio_resid / 16;
- cookies = malloc(ncookies * sizeof(u_long), M_TEMP,
+ cookies = malloc(ncookies * sizeof(*cookies), M_TEMP,
M_WAITOK);
*ap->a_cookies = cookies;
*ap->a_ncookies = ncookies;
Index: sys/fs/nfs/xdr_subs.h
===================================================================
--- sys/fs/nfs/xdr_subs.h
+++ sys/fs/nfs/xdr_subs.h
@@ -93,9 +93,11 @@
((((u_quad_t)ntohl(((u_int32_t *)(f))[0])) << 32) | \
(u_quad_t)(ntohl(((u_int32_t *)(f))[1])))
-#define txdr_hyper(f, t) do { \
- ((u_int32_t *)(t))[0] = htonl((u_int32_t)((f) >> 32)); \
- ((u_int32_t *)(t))[1] = htonl((u_int32_t)((f) & 0xffffffff)); \
- } while (0)
+static inline void
+txdr_hyper(uint64_t f, uint32_t* t)
+{
+ t[0] = htonl((u_int32_t)(f >> 32));
+ t[1] = htonl((u_int32_t)(f & 0xffffffff));
+}
#endif /* _NFS_XDR_SUBS_H_ */
Index: sys/fs/nfsserver/nfs_nfsdport.c
===================================================================
--- sys/fs/nfsserver/nfs_nfsdport.c
+++ sys/fs/nfsserver/nfs_nfsdport.c
@@ -2047,7 +2047,7 @@
int nlen, error = 0, getret = 1;
int siz, cnt, fullsiz, eofflag, ncookies;
u_int64_t off, toff, verf __unused;
- u_long *cookies = NULL, *cookiep;
+ uint64_t *cookies = NULL, *cookiep;
struct uio io;
struct iovec iv;
int is_ufs;
@@ -2258,10 +2258,11 @@
(void) nfsm_strtom(nd, dp->d_name, nlen);
if (nd->nd_flag & ND_NFSV3) {
NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
- *tl++ = 0;
- } else
+ txdr_hyper(*cookiep, tl);
+ } else {
NFSM_BUILD(tl, u_int32_t *, NFSX_UNSIGNED);
- *tl = txdr_unsigned(*cookiep);
+ *tl = txdr_unsigned(*cookiep);
+ }
}
cpos += dp->d_reclen;
dp = (struct dirent *)cpos;
@@ -2308,7 +2309,7 @@
int siz, cnt, fullsiz, eofflag, ncookies, entrycnt;
caddr_t bpos0, bpos1;
u_int64_t off, toff, verf __unused;
- u_long *cookies = NULL, *cookiep;
+ uint64_t *cookies = NULL, *cookiep;
nfsattrbit_t attrbits, rderrbits, savbits;
struct uio io;
struct iovec iv;
@@ -2747,8 +2748,7 @@
*tl = txdr_unsigned(dp->d_fileno);
dirlen += nfsm_strtom(nd, dp->d_name, nlen);
NFSM_BUILD(tl, u_int32_t *, 2 * NFSX_UNSIGNED);
- *tl++ = 0;
- *tl = txdr_unsigned(*cookiep);
+ txdr_hyper(*cookiep, tl);
nfsrv_postopattr(nd, 0, nvap);
dirlen += nfsm_fhtom(nd,(u_int8_t *)&nfh,0,1);
dirlen += (5*NFSX_UNSIGNED+NFSX_V3POSTOPATTR);
@@ -2757,8 +2757,7 @@
} else {
NFSM_BUILD(tl, u_int32_t *, 3 * NFSX_UNSIGNED);
*tl++ = newnfs_true;
- *tl++ = 0;
- *tl = txdr_unsigned(*cookiep);
+ txdr_hyper(*cookiep, tl);
dirlen += nfsm_strtom(nd, dp->d_name, nlen);
if (nvp != NULL) {
supports_nfsv4acls =
Index: sys/fs/nfsserver/nfs_nfsdsubs.c
===================================================================
--- sys/fs/nfsserver/nfs_nfsdsubs.c
+++ sys/fs/nfsserver/nfs_nfsdsubs.c
@@ -1433,13 +1433,13 @@
if (nd->nd_flag & ND_NFSV3) {
fp->fa_type = vtonfsv34_type(nvap->na_type);
fp->fa_mode = vtonfsv34_mode(nvap->na_mode);
- txdr_hyper(nvap->na_size, &fp->fa3_size);
- txdr_hyper(nvap->na_bytes, &fp->fa3_used);
+ txdr_hyper(nvap->na_size, (uint32_t*)&fp->fa3_size);
+ txdr_hyper(nvap->na_bytes, (uint32_t*)&fp->fa3_used);
fp->fa3_rdev.specdata1 = txdr_unsigned(NFSMAJOR(nvap->na_rdev));
fp->fa3_rdev.specdata2 = txdr_unsigned(NFSMINOR(nvap->na_rdev));
fp->fa3_fsid.nfsuquad[0] = 0;
fp->fa3_fsid.nfsuquad[1] = txdr_unsigned(nvap->na_fsid);
- txdr_hyper(nvap->na_fileid, &fp->fa3_fileid);
+ txdr_hyper(nvap->na_fileid, (uint32_t*)&fp->fa3_fileid);
txdr_nfsv3time(&nvap->na_atime, &fp->fa3_atime);
txdr_nfsv3time(&nvap->na_mtime, &fp->fa3_mtime);
txdr_nfsv3time(&nvap->na_ctime, &fp->fa3_ctime);
Index: sys/fs/smbfs/smbfs_vnops.c
===================================================================
--- sys/fs/smbfs/smbfs_vnops.c
+++ sys/fs/smbfs/smbfs_vnops.c
@@ -831,7 +831,7 @@
struct uio *a_uio;
struct ucred *a_cred;
int *a_eofflag;
- u_long *a_cookies;
+ uint64_t *a_cookies;
int a_ncookies;
} */ *ap;
{
Index: sys/fs/tmpfs/tmpfs.h
===================================================================
--- sys/fs/tmpfs/tmpfs.h
+++ sys/fs/tmpfs/tmpfs.h
@@ -455,7 +455,7 @@
struct tmpfs_node *f,
struct componentname *cnp);
int tmpfs_dir_getdents(struct tmpfs_mount *, struct tmpfs_node *,
- struct uio *, int, u_long *, int *);
+ struct uio *, int, uint64_t *, int *);
int tmpfs_dir_whiteout_add(struct vnode *, struct componentname *);
void tmpfs_dir_whiteout_remove(struct vnode *, struct componentname *);
int tmpfs_reg_resize(struct vnode *, off_t, boolean_t);
Index: sys/fs/tmpfs/tmpfs_subr.c
===================================================================
--- sys/fs/tmpfs/tmpfs_subr.c
+++ sys/fs/tmpfs/tmpfs_subr.c
@@ -1527,7 +1527,7 @@
*/
int
tmpfs_dir_getdents(struct tmpfs_mount *tm, struct tmpfs_node *node,
- struct uio *uio, int maxcookies, u_long *cookies, int *ncookies)
+ struct uio *uio, int maxcookies, uint64_t *cookies, int *ncookies)
{
struct tmpfs_dir_cursor dc;
struct tmpfs_dirent *de, *nde;
Index: sys/fs/tmpfs/tmpfs_vnops.c
===================================================================
--- sys/fs/tmpfs/tmpfs_vnops.c
+++ sys/fs/tmpfs/tmpfs_vnops.c
@@ -1389,7 +1389,7 @@
struct uio *uio;
struct tmpfs_mount *tm;
struct tmpfs_node *node;
- u_long **cookies;
+ uint64_t **cookies;
int *eofflag, *ncookies;
ssize_t startresid;
int error, maxcookies;
Index: sys/fs/udf/udf_vnops.c
===================================================================
--- sys/fs/udf/udf_vnops.c
+++ sys/fs/udf/udf_vnops.c
@@ -607,7 +607,7 @@
struct udf_uiodir {
struct dirent *dirent;
- u_long *cookies;
+ uint64_t *cookies;
int ncookies;
int acookies;
int eofflag;
@@ -787,7 +787,7 @@
struct fileid_desc *fid;
struct udf_uiodir uiodir;
struct udf_dirstream *ds;
- u_long *cookies = NULL;
+ uint64_t *cookies = NULL;
int ncookies;
int error = 0;
@@ -804,8 +804,7 @@
* it left off.
*/
ncookies = uio->uio_resid / 8;
- cookies = malloc(sizeof(u_long) * ncookies,
- M_TEMP, M_WAITOK);
+ cookies = malloc(sizeof(*cookies) * ncookies, M_TEMP, M_WAITOK);
if (cookies == NULL)
return (ENOMEM);
uiodir.ncookies = ncookies;
Index: sys/fs/unionfs/union_vnops.c
===================================================================
--- sys/fs/unionfs/union_vnops.c
+++ sys/fs/unionfs/union_vnops.c
@@ -1509,7 +1509,7 @@
struct thread *td;
struct vattr va;
- u_long *cookies_bk;
+ uint64_t *cookies_bk;
int error;
int eofflag;
int locked;
@@ -1660,17 +1660,17 @@
if (cookies_bk != NULL) {
/* merge cookies */
int size;
- u_long *newcookies, *pos;
+ uint64_t *newcookies, *pos;
size = *(ap->a_ncookies) + ncookies_bk;
- newcookies = (u_long *) malloc(size * sizeof(u_long),
+ newcookies = (uint64_t *) malloc(size * sizeof(*newcookies),
M_TEMP, M_WAITOK);
pos = newcookies;
- memcpy(pos, cookies_bk, ncookies_bk * sizeof(u_long));
+ memcpy(pos, cookies_bk, ncookies_bk * sizeof(*newcookies));
pos += ncookies_bk;
memcpy(pos, *(ap->a_cookies),
- *(ap->a_ncookies) * sizeof(u_long));
+ *(ap->a_ncookies) * sizeof(*newcookies));
free(cookies_bk, M_TEMP);
free(*(ap->a_cookies), M_TEMP);
*(ap->a_ncookies) = size;
Index: sys/kern/uipc_mqueue.c
===================================================================
--- sys/kern/uipc_mqueue.c
+++ sys/kern/uipc_mqueue.c
@@ -1369,7 +1369,7 @@
struct ucred *a_cred;
int *a_eofflag;
int *a_ncookies;
- u_long **a_cookies;
+ uint64_t **a_cookies;
};
#endif
Index: sys/kern/vfs_subr.c
===================================================================
--- sys/kern/vfs_subr.c
+++ sys/kern/vfs_subr.c
@@ -6419,7 +6419,7 @@
("NULL ap->a_cookies value with non-NULL ap->a_ncookies!"));
*ap->a_cookies = realloc(*ap->a_cookies,
- (*ap->a_ncookies + 1) * sizeof(u_long), M_TEMP, M_WAITOK | M_ZERO);
+ (*ap->a_ncookies + 1) * sizeof(uint64_t), M_TEMP, M_WAITOK | M_ZERO);
(*ap->a_cookies)[*ap->a_ncookies] = off;
*ap->a_ncookies += 1;
return (0);
Index: sys/kern/vnode_if.src
===================================================================
--- sys/kern/vnode_if.src
+++ sys/kern/vnode_if.src
@@ -392,7 +392,7 @@
IN struct ucred *cred;
INOUT int *eofflag;
OUT int *ncookies;
- INOUT u_long **cookies;
+ INOUT uint64_t **cookies;
};
Index: sys/nfs/xdr_subs.h
===================================================================
--- sys/nfs/xdr_subs.h
+++ sys/nfs/xdr_subs.h
@@ -83,10 +83,12 @@
#define fxdr_hyper(f) \
((((u_quad_t)ntohl(((u_int32_t *)(f))[0])) << 32) | \
(u_quad_t)(ntohl(((u_int32_t *)(f))[1])))
-#define txdr_hyper(f, t) \
-do { \
- ((u_int32_t *)(t))[0] = htonl((u_int32_t)((f) >> 32)); \
- ((u_int32_t *)(t))[1] = htonl((u_int32_t)((f) & 0xffffffff)); \
-} while (0)
+
+static inline void
+txdr_hyper(uint64_t f, uint32_t* t)
+{
+ t[0] = htonl((u_int32_t)(f >> 32));
+ t[1] = htonl((u_int32_t)(f & 0xffffffff));
+}
#endif
Index: sys/sys/param.h
===================================================================
--- sys/sys/param.h
+++ sys/sys/param.h
@@ -76,7 +76,7 @@
* cannot include sys/param.h and should only be updated here.
*/
#undef __FreeBSD_version
-#define __FreeBSD_version 1400044
+#define __FreeBSD_version 1400045
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
Index: sys/ufs/ufs/ufs_vnops.c
===================================================================
--- sys/ufs/ufs/ufs_vnops.c
+++ sys/ufs/ufs/ufs_vnops.c
@@ -2336,7 +2336,7 @@
struct ucred *a_cred;
int *a_eofflag;
int *a_ncookies;
- u_long **a_cookies;
+ uint64_t **a_cookies;
} */ *ap;
{
struct vnode *vp = ap->a_vp;
@@ -2344,7 +2344,7 @@
struct buf *bp;
struct inode *ip;
struct direct *dp, *edp;
- u_long *cookies;
+ uint64_t *cookies;
struct dirent dstdp;
off_t offset, startoffset;
size_t readcnt, skipcnt;

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 22, 5:28 AM (13 h, 58 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31955743
Default Alt Text
D33404.id100079.diff (15 KB)

Event Timeline