aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-10-01 22:25:39 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-10-11 13:22:32 +0000
commit2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3 (patch)
tree85d502dfebd0668ab24a08484331b83a19479471
parentb4a58fbf640409a1e507d9f7b411c83a3f83a2f3 (diff)
downloadsrc-2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3.tar.gz
src-2b68eb8e1dbbdaf6a0df1c83b26f5403ca52d4c3.zip
vfs: remove thread argument from VOP_STAT
and fo_stat.
-rw-r--r--share/man/man9/VOP_ATTRIB.96
-rw-r--r--sys/compat/linux/linux_event.c3
-rw-r--r--sys/compat/linuxkpi/common/src/linux_compat.c5
-rw-r--r--sys/contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c2
-rw-r--r--sys/fs/devfs/devfs_vnops.c4
-rw-r--r--sys/kern/kern_descrip.c5
-rw-r--r--sys/kern/kern_event.c3
-rw-r--r--sys/kern/sys_eventfd.c3
-rw-r--r--sys/kern/sys_pipe.c5
-rw-r--r--sys/kern/sys_procdesc.c3
-rw-r--r--sys/kern/sys_socket.c3
-rw-r--r--sys/kern/tty_pts.c3
-rw-r--r--sys/kern/uipc_mqueue.c3
-rw-r--r--sys/kern/uipc_sem.c3
-rw-r--r--sys/kern/uipc_shm.c3
-rw-r--r--sys/kern/vfs_syscalls.c6
-rw-r--r--sys/kern/vfs_vnops.c5
-rw-r--r--sys/kern/vnode_if.src1
-rw-r--r--sys/sys/file.h7
-rw-r--r--sys/sys/param.h2
-rw-r--r--sys/sys/vnode.h2
21 files changed, 30 insertions, 47 deletions
diff --git a/share/man/man9/VOP_ATTRIB.9 b/share/man/man9/VOP_ATTRIB.9
index 45f1e2f1652a..ddfee1f5d1f9 100644
--- a/share/man/man9/VOP_ATTRIB.9
+++ b/share/man/man9/VOP_ATTRIB.9
@@ -28,7 +28,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 8, 2020
+.Dd October 2, 2021
.Dt VOP_ATTRIB 9
.Os
.Sh NAME
@@ -44,7 +44,7 @@
.Fn VOP_SETATTR "struct vnode *vp" "struct vattr *vap" "struct ucred *cred"
.Ft int
.Fn VOP_STAT "struct vnode *vp" "struct stat *sb" "struct ucred *active_cred" \
-"struct ucred *file_cred" "struct thread *td"
+"struct ucred *file_cred"
.Sh DESCRIPTION
These entry points manipulate various attributes of a file or directory,
including file permissions, owner, group, size,
@@ -83,8 +83,6 @@ The attributes of the file.
The user credentials of the calling thread.
.It Fa file_cred
The credentials installed on the file description pointing to the vnode or NOCRED.
-.It Fa td
-The calling thread.
.El
.Pp
Attributes which are not being modified by
diff --git a/sys/compat/linux/linux_event.c b/sys/compat/linux/linux_event.c
index 331732eb4234..2539b406618f 100644
--- a/sys/compat/linux/linux_event.c
+++ b/sys/compat/linux/linux_event.c
@@ -801,8 +801,7 @@ timerfd_ioctl(struct file *fp, u_long cmd, void *data,
}
static int
-timerfd_stat(struct file *fp, struct stat *st, struct ucred *active_cred,
- struct thread *td)
+timerfd_stat(struct file *fp, struct stat *st, struct ucred *active_cred)
{
return (ENXIO);
diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c
index 279f7131fc57..7a062ca36eba 100644
--- a/sys/compat/linuxkpi/common/src/linux_compat.c
+++ b/sys/compat/linuxkpi/common/src/linux_compat.c
@@ -1698,8 +1698,7 @@ out:
}
static int
-linux_file_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+linux_file_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct linux_file *filp;
struct vnode *vp;
@@ -1712,7 +1711,7 @@ linux_file_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
vp = filp->f_vnode;
vn_lock(vp, LK_SHARED | LK_RETRY);
- error = VOP_STAT(vp, sb, td->td_ucred, NOCRED, td);
+ error = VOP_STAT(vp, sb, curthread->td_ucred, NOCRED);
VOP_UNLOCK(vp);
return (error);
diff --git a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c
index a3d67aaa11ba..6ff0ffaf1c43 100644
--- a/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c
+++ b/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c
@@ -207,7 +207,7 @@ zfs_file_getattr(zfs_file_t *fp, zfs_file_attr_t *zfattr)
td = curthread;
- rc = fo_stat(fp, &sb, td->td_ucred, td);
+ rc = fo_stat(fp, &sb, td->td_ucred);
if (rc)
return (SET_ERROR(rc));
zfattr->zfa_size = sb.st_size;
diff --git a/sys/fs/devfs/devfs_vnops.c b/sys/fs/devfs/devfs_vnops.c
index 9a327c02ee96..964d288324b4 100644
--- a/sys/fs/devfs/devfs_vnops.c
+++ b/sys/fs/devfs/devfs_vnops.c
@@ -1838,10 +1838,10 @@ devfs_setlabel(struct vop_setlabel_args *ap)
#endif
static int
-devfs_stat_f(struct file *fp, struct stat *sb, struct ucred *cred, struct thread *td)
+devfs_stat_f(struct file *fp, struct stat *sb, struct ucred *cred)
{
- return (vnops.fo_stat(fp, sb, cred, td));
+ return (vnops.fo_stat(fp, sb, cred));
}
static int
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index b10dcc2f9469..55c2a36955a5 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1527,7 +1527,7 @@ kern_fstat(struct thread *td, int fd, struct stat *sbp)
AUDIT_ARG_FILE(td->td_proc, fp);
- error = fo_stat(fp, sbp, td->td_ucred, td);
+ error = fo_stat(fp, sbp, td->td_ucred);
fdrop(fp, td);
#ifdef __STAT_TIME_T_EXT
sbp->st_atim_ext = 0;
@@ -4871,8 +4871,7 @@ badfo_kqfilter(struct file *fp, struct knote *kn)
}
static int
-badfo_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+badfo_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
return (EBADF);
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index c9b50912a22d..ade71a848868 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -2187,8 +2187,7 @@ kqueue_poll(struct file *fp, int events, struct ucred *active_cred,
/*ARGSUSED*/
static int
-kqueue_stat(struct file *fp, struct stat *st, struct ucred *active_cred,
- struct thread *td)
+kqueue_stat(struct file *fp, struct stat *st, struct ucred *active_cred)
{
bzero((void *)st, sizeof *st);
diff --git a/sys/kern/sys_eventfd.c b/sys/kern/sys_eventfd.c
index 91c045e85faf..8ee8421296e5 100644
--- a/sys/kern/sys_eventfd.c
+++ b/sys/kern/sys_eventfd.c
@@ -325,8 +325,7 @@ eventfd_ioctl(struct file *fp, u_long cmd, void *data,
}
static int
-eventfd_stat(struct file *fp, struct stat *st, struct ucred *active_cred,
- struct thread *td)
+eventfd_stat(struct file *fp, struct stat *st, struct ucred *active_cred)
{
bzero((void *)st, sizeof *st);
st->st_mode = S_IFIFO;
diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c
index ee6ccbbad322..7bd7fea28e76 100644
--- a/sys/kern/sys_pipe.c
+++ b/sys/kern/sys_pipe.c
@@ -1515,8 +1515,7 @@ locked_error:
* be a natural race.
*/
static int
-pipe_stat(struct file *fp, struct stat *ub, struct ucred *active_cred,
- struct thread *td)
+pipe_stat(struct file *fp, struct stat *ub, struct ucred *active_cred)
{
struct pipe *pipe;
#ifdef MAC
@@ -1537,7 +1536,7 @@ pipe_stat(struct file *fp, struct stat *ub, struct ucred *active_cred,
/* For named pipes ask the underlying filesystem. */
if (pipe->pipe_type & PIPE_TYPE_NAMED) {
- return (vnops.fo_stat(fp, ub, active_cred, td));
+ return (vnops.fo_stat(fp, ub, active_cred));
}
bzero(ub, sizeof(*ub));
diff --git a/sys/kern/sys_procdesc.c b/sys/kern/sys_procdesc.c
index 95a389c582b0..ff1a1502aa71 100644
--- a/sys/kern/sys_procdesc.c
+++ b/sys/kern/sys_procdesc.c
@@ -508,8 +508,7 @@ procdesc_kqfilter(struct file *fp, struct knote *kn)
}
static int
-procdesc_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+procdesc_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct procdesc *pd;
struct timeval pstart, boottime;
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c
index 8cf703ab8ebd..d4200e5618d2 100644
--- a/sys/kern/sys_socket.c
+++ b/sys/kern/sys_socket.c
@@ -301,8 +301,7 @@ soo_poll(struct file *fp, int events, struct ucred *active_cred,
}
static int
-soo_stat(struct file *fp, struct stat *ub, struct ucred *active_cred,
- struct thread *td)
+soo_stat(struct file *fp, struct stat *ub, struct ucred *active_cred)
{
struct socket *so = fp->f_data;
int error;
diff --git a/sys/kern/tty_pts.c b/sys/kern/tty_pts.c
index dbbf35cf1a12..a912634393f6 100644
--- a/sys/kern/tty_pts.c
+++ b/sys/kern/tty_pts.c
@@ -535,8 +535,7 @@ ptsdev_kqfilter(struct file *fp, struct knote *kn)
}
static int
-ptsdev_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+ptsdev_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct tty *tp = fp->f_data;
#ifdef PTS_EXTERNAL
diff --git a/sys/kern/uipc_mqueue.c b/sys/kern/uipc_mqueue.c
index a9fb40848fbd..24ed1be6bf65 100644
--- a/sys/kern/uipc_mqueue.c
+++ b/sys/kern/uipc_mqueue.c
@@ -2537,8 +2537,7 @@ mqf_close(struct file *fp, struct thread *td)
}
static int
-mqf_stat(struct file *fp, struct stat *st, struct ucred *active_cred,
- struct thread *td)
+mqf_stat(struct file *fp, struct stat *st, struct ucred *active_cred)
{
struct mqfs_node *pn = fp->f_data;
diff --git a/sys/kern/uipc_sem.c b/sys/kern/uipc_sem.c
index db1d84696df0..e7c7a04f5c54 100644
--- a/sys/kern/uipc_sem.c
+++ b/sys/kern/uipc_sem.c
@@ -161,8 +161,7 @@ static struct fileops ksem_ops = {
FEATURE(posix_sem, "POSIX semaphores");
static int
-ksem_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+ksem_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct ksem *ks;
#ifdef MAC
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index 63c4250f640f..14d808bfc166 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -538,8 +538,7 @@ shm_ioctl(struct file *fp, u_long com, void *data, struct ucred *active_cred,
}
static int
-shm_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+shm_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct shmfd *shmfd;
#ifdef MAC
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 82a8125ece95..29a6b34d083a 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -1924,7 +1924,7 @@ restart:
if (vp->v_type == VDIR && oldinum == 0) {
error = EPERM; /* POSIX */
} else if (oldinum != 0 &&
- ((error = VOP_STAT(vp, &sb, td->td_ucred, NOCRED, td)) == 0) &&
+ ((error = VOP_STAT(vp, &sb, td->td_ucred, NOCRED)) == 0) &&
sb.st_ino != oldinum) {
error = EIDRM; /* Identifier removed */
} else if (fp != NULL && fp->f_vnode != vp) {
@@ -2444,7 +2444,7 @@ kern_statat(struct thread *td, int flag, int fd, const char *path,
error = kern_fstat(td, fd, sbp);
return (error);
}
- error = VOP_STAT(nd.ni_vp, sbp, td->td_ucred, NOCRED, td);
+ error = VOP_STAT(nd.ni_vp, sbp, td->td_ucred, NOCRED);
if (error == 0) {
if (__predict_false(hook != NULL))
hook(nd.ni_vp, sbp);
@@ -4663,7 +4663,7 @@ kern_fhstat(struct thread *td, struct fhandle fh, struct stat *sb)
vfs_unbusy(mp);
if (error != 0)
return (error);
- error = VOP_STAT(vp, sb, td->td_ucred, NOCRED, td);
+ error = VOP_STAT(vp, sb, td->td_ucred, NOCRED);
vput(vp);
return (error);
}
diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
index 2c25a25da6c6..d6c472995489 100644
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -1670,14 +1670,13 @@ vn_truncate_locked(struct vnode *vp, off_t length, bool sync,
* File table vnode stat routine.
*/
int
-vn_statfile(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+vn_statfile(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
struct vnode *vp = fp->f_vnode;
int error;
vn_lock(vp, LK_SHARED | LK_RETRY);
- error = VOP_STAT(vp, sb, active_cred, fp->f_cred, td);
+ error = VOP_STAT(vp, sb, active_cred, fp->f_cred);
VOP_UNLOCK(vp);
return (error);
diff --git a/sys/kern/vnode_if.src b/sys/kern/vnode_if.src
index ff57d1c9a28e..d10758019b87 100644
--- a/sys/kern/vnode_if.src
+++ b/sys/kern/vnode_if.src
@@ -193,7 +193,6 @@ vop_stat {
OUT struct stat *sb;
IN struct ucred *active_cred;
IN struct ucred *file_cred;
- IN struct thread *td;
};
diff --git a/sys/sys/file.h b/sys/sys/file.h
index 8a790a25fc6b..5a6f0b1d2071 100644
--- a/sys/sys/file.h
+++ b/sys/sys/file.h
@@ -108,7 +108,7 @@ typedef int fo_poll_t(struct file *fp, int events,
struct ucred *active_cred, struct thread *td);
typedef int fo_kqfilter_t(struct file *fp, struct knote *kn);
typedef int fo_stat_t(struct file *fp, struct stat *sb,
- struct ucred *active_cred, struct thread *td);
+ struct ucred *active_cred);
typedef int fo_close_t(struct file *fp, struct thread *td);
typedef int fo_chmod_t(struct file *fp, mode_t mode,
struct ucred *active_cred, struct thread *td);
@@ -369,11 +369,10 @@ fo_poll(struct file *fp, int events, struct ucred *active_cred,
}
static __inline int
-fo_stat(struct file *fp, struct stat *sb, struct ucred *active_cred,
- struct thread *td)
+fo_stat(struct file *fp, struct stat *sb, struct ucred *active_cred)
{
- return ((*fp->f_ops->fo_stat)(fp, sb, active_cred, td));
+ return ((*fp->f_ops->fo_stat)(fp, sb, active_cred));
}
static __inline int
diff --git a/sys/sys/param.h b/sys/sys/param.h
index 9a016e35323e..50d861a61985 100644
--- a/sys/sys/param.h
+++ b/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 1400036
+#define __FreeBSD_version 1400037
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h
index 81f3f3d5489c..a9b57dd4c25d 100644
--- a/sys/sys/vnode.h
+++ b/sys/sys/vnode.h
@@ -962,7 +962,7 @@ void vop_rename_fail(struct vop_rename_args *ap);
#define vop_stat_helper_post(ap, error) ({ \
int _error = (error); \
- if (priv_check_cred_vfs_generation(ap->a_td->td_ucred)) \
+ if (priv_check_cred_vfs_generation(ap->a_active_cred)) \
ap->a_sb->st_gen = 0; \
_error; \
})