Page MenuHomeFreeBSD

D35474.id106869.diff
No OneTemporary

D35474.id106869.diff

Index: sys/compat/freebsd32/freebsd32_misc.c
===================================================================
--- sys/compat/freebsd32/freebsd32_misc.c
+++ sys/compat/freebsd32/freebsd32_misc.c
@@ -2257,7 +2257,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error)
return (error);
copy_ostat(&sb, &sb32);
@@ -2306,7 +2306,7 @@
int error;
error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE,
- &ub, NULL);
+ &ub);
if (error)
return (error);
copy_stat(&ub, &ub32);
@@ -2323,7 +2323,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error)
return (error);
copy_ostat(&sb, &sb32);
@@ -2442,7 +2442,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat32(&sb, &sb32);
@@ -2477,7 +2477,7 @@
int error;
error = kern_statat(td, uap->flag, uap->fd, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat32(&sb, &sb32);
@@ -2495,7 +2495,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat32(&sb, &sb32);
@@ -2568,7 +2568,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
error = freebsd11_cvtnstat32(&sb, &nsb);
@@ -2586,7 +2586,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
error = freebsd11_cvtnstat32(&sb, &nsb);
Index: sys/compat/linux/linux_file.c
===================================================================
--- sys/compat/linux/linux_file.c
+++ sys/compat/linux/linux_file.c
@@ -741,7 +741,7 @@
if (error == EPERM) {
/* Introduce POSIX noncompliant behaviour of Linux */
if (kern_statat(td, 0, AT_FDCWD, args->path,
- UIO_USERSPACE, &st, NULL) == 0) {
+ UIO_USERSPACE, &st) == 0) {
if (S_ISDIR(st.st_mode))
error = EISDIR;
}
@@ -751,8 +751,8 @@
error = kern_funlinkat(td, AT_FDCWD, path, FD_NONE, UIO_SYSSPACE, 0, 0);
if (error == EPERM) {
/* Introduce POSIX noncompliant behaviour of Linux */
- if (kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE, &st,
- NULL) == 0) {
+ if (kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE,
+ &st) == 0) {
if (S_ISDIR(st.st_mode))
error = EISDIR;
}
@@ -778,7 +778,7 @@
if (error == EPERM && !(args->flag & LINUX_AT_REMOVEDIR)) {
/* Introduce POSIX noncompliant behaviour of Linux */
if (kern_statat(td, AT_SYMLINK_NOFOLLOW, dfd, path,
- pathseg, &st, NULL) == 0 && S_ISDIR(st.st_mode))
+ pathseg, &st) == 0 && S_ISDIR(st.st_mode))
error = EISDIR;
}
return (error);
Index: sys/compat/linux/linux_stats.c
===================================================================
--- sys/compat/linux/linux_stats.c
+++ sys/compat/linux/linux_stats.c
@@ -59,38 +59,12 @@
#include <compat/linux/linux_util.h>
#include <compat/linux/linux_file.h>
-static void
-translate_vnhook_major_minor(struct vnode *vp, struct stat *sb)
-{
- int major, minor;
-
- if (vn_isdisk(vp)) {
- sb->st_mode &= ~S_IFMT;
- sb->st_mode |= S_IFBLK;
- }
-
- /*
- * Return the same st_dev for every devfs instance. The reason
- * for this is to work around an idiosyncrasy of glibc getttynam()
- * implementation: it checks whether st_dev returned for fd 0
- * is the same as st_dev returned for the target of /proc/self/fd/0
- * symlink, and with linux chroots having their own devfs instance,
- * the check will fail if you chroot into it.
- */
- if (rootdevmp != NULL && vp->v_mount->mnt_vfc == rootdevmp->mnt_vfc)
- sb->st_dev = rootdevmp->mnt_stat.f_fsid.val[0];
-
- if (linux_vn_get_major_minor(vp, &major, &minor) == 0)
- sb->st_rdev = (major << 8 | minor);
-}
-
static int
linux_kern_statat(struct thread *td, int flag, int fd, const char *path,
enum uio_seg pathseg, struct stat *sbp)
{
- return (kern_statat(td, flag, fd, path, pathseg, sbp,
- translate_vnhook_major_minor));
+ return (kern_statat(td, flag, fd, path, pathseg, sbp));
}
#ifdef LINUX_LEGACY_SYSCALLS
Index: sys/kern/vfs_mountroot.c
===================================================================
--- sys/kern/vfs_mountroot.c
+++ sys/kern/vfs_mountroot.c
@@ -594,7 +594,7 @@
free(tok, M_TEMP);
/* Get file status. */
- error = kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE, &sb, NULL);
+ error = kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE, &sb);
if (error)
goto out;
Index: sys/kern/vfs_syscalls.c
===================================================================
--- sys/kern/vfs_syscalls.c
+++ sys/kern/vfs_syscalls.c
@@ -2196,7 +2196,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
cvtstat(&sb, &osb);
@@ -2220,7 +2220,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
cvtstat(&sb, &osb);
@@ -2339,7 +2339,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat(&sb, &osb);
@@ -2356,7 +2356,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat(&sb, &osb);
@@ -2393,7 +2393,7 @@
int error;
error = kern_statat(td, uap->flag, uap->fd, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
error = freebsd11_cvtstat(&sb, &osb);
@@ -2421,7 +2421,7 @@
int error;
error = kern_statat(td, uap->flag, uap->fd, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error == 0)
error = copyout(&sb, uap->buf, sizeof (sb));
return (error);
@@ -2429,8 +2429,7 @@
int
kern_statat(struct thread *td, int flag, int fd, const char *path,
- enum uio_seg pathseg, struct stat *sbp,
- void (*hook)(struct vnode *vp, struct stat *sbp))
+ enum uio_seg pathseg, struct stat *sbp)
{
struct nameidata nd;
int error;
@@ -2450,10 +2449,6 @@
return (error);
}
error = VOP_STAT(nd.ni_vp, sbp, td->td_ucred, NOCRED);
- if (error == 0) {
- if (__predict_false(hook != NULL))
- hook(nd.ni_vp, sbp);
- }
NDFREE_NOTHING(&nd);
vput(nd.ni_vp);
#ifdef __STAT_TIME_T_EXT
@@ -2517,7 +2512,7 @@
int error;
error = kern_statat(td, 0, AT_FDCWD, uap->path, UIO_USERSPACE,
- &sb, NULL);
+ &sb);
if (error != 0)
return (error);
error = freebsd11_cvtnstat(&sb, &nsb);
@@ -2543,7 +2538,7 @@
int error;
error = kern_statat(td, AT_SYMLINK_NOFOLLOW, AT_FDCWD, uap->path,
- UIO_USERSPACE, &sb, NULL);
+ UIO_USERSPACE, &sb);
if (error != 0)
return (error);
error = freebsd11_cvtnstat(&sb, &nsb);
Index: sys/sys/syscallsubr.h
===================================================================
--- sys/sys/syscallsubr.h
+++ sys/sys/syscallsubr.h
@@ -319,8 +319,7 @@
union sigval *value);
int kern_socket(struct thread *td, int domain, int type, int protocol);
int kern_statat(struct thread *td, int flag, int fd, const char *path,
- enum uio_seg pathseg, struct stat *sbp,
- void (*hook)(struct vnode *vp, struct stat *sbp));
+ enum uio_seg pathseg, struct stat *sbp);
int kern_specialfd(struct thread *td, int type, void *arg);
int kern_statfs(struct thread *td, const char *path, enum uio_seg pathseg,
struct statfs *buf);

File Metadata

Mime Type
text/plain
Expires
Fri, Feb 13, 2:10 PM (11 h, 41 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28677573
Default Alt Text
D35474.id106869.diff (7 KB)

Event Timeline