diff options
author | Alan Somers <asomers@FreeBSD.org> | 2021-12-14 02:37:27 +0000 |
---|---|---|
committer | Alan Somers <asomers@FreeBSD.org> | 2021-12-16 03:54:57 +0000 |
commit | b214fcceacad6b842545150664bd2695c1c2b34f (patch) | |
tree | 52b08274866d6f77ff16025bd63f6c1bd598c50f /sys/fs/msdosfs | |
parent | 32fbc5d824f51f97220bc5c61a23e0bf3ff2b470 (diff) | |
download | src-b214fcceacad6b842545150664bd2695c1c2b34f.tar.gz src-b214fcceacad6b842545150664bd2695c1c2b34f.zip |
Change VOP_READDIR's cookies argument to a **uint64_t
The cookies argument is only used by the NFS server. NFSv2 defines the
cookie as 32 bits on the wire, but NFSv3 increased it to 64 bits. Our
VOP_READDIR, however, has always defined it as u_long, which is 32 bits
on some architectures. Change it to 64 bits on all architectures. This
doesn't matter for any in-tree file systems, but it matters for some
FUSE file systems that use 64-bit directory cookies.
PR: 260375
Reviewed by: rmacklem
Differential Revision: https://reviews.freebsd.org/D33404
Diffstat (limited to 'sys/fs/msdosfs')
-rw-r--r-- | sys/fs/msdosfs/msdosfs_vnops.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/fs/msdosfs/msdosfs_vnops.c b/sys/fs/msdosfs/msdosfs_vnops.c index a431190d7089..c071d9f44d86 100644 --- a/sys/fs/msdosfs/msdosfs_vnops.c +++ b/sys/fs/msdosfs/msdosfs_vnops.c @@ -1517,7 +1517,7 @@ msdosfs_readdir(struct vop_readdir_args *ap) 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 @@ msdosfs_readdir(struct vop_readdir_args *ap) 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; |