usermount is dead. Ok?

natano


Index: lib/libc/gen/sysctl.3
===================================================================
RCS file: /cvs/src/lib/libc/gen/sysctl.3,v
retrieving revision 1.267
diff -u -p -r1.267 sysctl.3
--- lib/libc/gen/sysctl.3       20 Jul 2016 09:15:28 -0000      1.267
+++ lib/libc/gen/sysctl.3       4 Sep 2016 21:11:14 -0000
@@ -474,7 +474,6 @@ information.
 .It Dv KERN_TIMECOUNTER Ta "node" Ta "not applicable"
 .It Dv KERN_TTY Ta "node" Ta "not applicable"
 .It Dv KERN_TTYCOUNT Ta "integer" Ta "no"
-.It Dv KERN_USERMOUNT Ta "integer" Ta "yes"
 .It Dv KERN_VERSION Ta "string" Ta "no"
 .It Dv KERN_WATCHDOG Ta "node" Ta "not applicable"
 .It Dv KERN_WXABORT Ta "integer" Ta "yes"
@@ -1016,8 +1015,6 @@ Returns the number of input characters i
 Number of available
 .Xr tty 4
 devices.
-.It Dv KERN_USERMOUNT
-Currently a no-op.
 .It Dv KERN_VERSION
 The system version string.
 .It Dv KERN_WATCHDOG
Index: sbin/sysctl/sysctl.8
===================================================================
RCS file: /cvs/src/sbin/sysctl/sysctl.8,v
retrieving revision 1.204
diff -u -p -r1.204 sysctl.8
--- sbin/sysctl/sysctl.8        27 Jul 2016 20:51:46 -0000      1.204
+++ sbin/sysctl/sysctl.8        4 Sep 2016 21:04:44 -0000
@@ -139,7 +139,6 @@ and a few require a kernel compiled with
 .It kern.osversion Ta string Ta no
 .It kern.somaxconn Ta integer Ta yes
 .It kern.sominconn Ta integer Ta yes
-.It kern.usermount Ta integer Ta yes
 .It kern.nosuidcoredump Ta integer Ta yes
 .It kern.fsync Ta integer Ta no
 .It kern.sysvmsg Ta integer Ta no
Index: sys/isofs/cd9660/cd9660_vfsops.c
===================================================================
RCS file: /cvs/src/sys/isofs/cd9660/cd9660_vfsops.c,v
retrieving revision 1.82
diff -u -p -r1.82 cd9660_vfsops.c
--- sys/isofs/cd9660/cd9660_vfsops.c    2 Sep 2016 10:16:03 -0000       1.82
+++ sys/isofs/cd9660/cd9660_vfsops.c    4 Sep 2016 20:02:52 -0000
@@ -179,19 +179,6 @@ cd9660_mount(mp, path, data, ndp, p)
                return (ENXIO);
        }
 
-       /*
-        * If mount by non-root, then verify that user has necessary
-        * permissions on the device.
-        */
-       if (suser(p, 0) != 0) {
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               error = VOP_ACCESS(devvp, VREAD, p->p_ucred, p);
-               if (error) {
-                       vput(devvp);
-                       return (error);
-               }
-               VOP_UNLOCK(devvp, p);
-       }
        if ((mp->mnt_flag & MNT_UPDATE) == 0)
                error = iso_mountfs(devvp, mp, p, &args);
        else {
Index: sys/isofs/udf/udf_vfsops.c
===================================================================
RCS file: /cvs/src/sys/isofs/udf/udf_vfsops.c,v
retrieving revision 1.54
diff -u -p -r1.54 udf_vfsops.c
--- sys/isofs/udf/udf_vfsops.c  25 Aug 2016 00:06:44 -0000      1.54
+++ sys/isofs/udf/udf_vfsops.c  4 Sep 2016 20:04:57 -0000
@@ -170,17 +170,6 @@ udf_mount(struct mount *mp, const char *
                return (ENXIO);
        }
 
-       /* Check the access rights on the mount device */
-       if (p->p_ucred->cr_uid) {
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               error = VOP_ACCESS(devvp, VREAD, p->p_ucred, p);
-               VOP_UNLOCK(devvp, p);
-               if (error) {
-                       vrele(devvp);
-                       return (error);
-               }
-       }
-
        if ((error = udf_mountfs(devvp, mp, args.lastblock, p))) {
                vrele(devvp);
                return (error);
Index: sys/kern/kern_sysctl.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_sysctl.c,v
retrieving revision 1.308
diff -u -p -r1.308 kern_sysctl.c
--- sys/kern/kern_sysctl.c      4 Sep 2016 09:22:29 -0000       1.308
+++ sys/kern/kern_sysctl.c      4 Sep 2016 21:07:46 -0000
@@ -414,10 +414,6 @@ kern_sysctl(int *name, u_int namelen, vo
                return (sysctl_int(oldp, oldlenp, newp, newlen, &somaxconn));
        case KERN_SOMINCONN:
                return (sysctl_int(oldp, oldlenp, newp, newlen, &sominconn));
-       case KERN_USERMOUNT: {
-               int usermount = 0;
-               return (sysctl_rdint(oldp, oldlenp, newp, usermount));
-               }
        case KERN_ARND: {
                char buf[512];
 
Index: sys/kern/vfs_syscalls.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_syscalls.c,v
retrieving revision 1.263
diff -u -p -r1.263 vfs_syscalls.c
--- sys/kern/vfs_syscalls.c     14 Jul 2016 15:39:40 -0000      1.263
+++ sys/kern/vfs_syscalls.c     4 Sep 2016 20:28:57 -0000
@@ -110,7 +110,6 @@ sys_mount(struct proc *p, void *v, regis
        int error, mntflag = 0;
        char fstypename[MFSNAMELEN];
        char fspath[MNAMELEN];
-       struct vattr va;
        struct nameidata nd;
        struct vfsconf *vfsp;
        int flags = SCARG(uap, flags);
@@ -150,29 +149,6 @@ sys_mount(struct proc *p, void *v, regis
                        return (EOPNOTSUPP);    /* Needs translation */
                }
 
-               /*
-                * Only root, or the user that did the original mount is
-                * permitted to update it.
-                */
-               if (mp->mnt_stat.f_owner != p->p_ucred->cr_uid &&
-                   (error = suser(p, 0))) {
-                       vput(vp);
-                       return (error);
-               }
-               /*
-                * Do not allow NFS export by non-root users. Silently
-                * enforce MNT_NOSUID and MNT_NODEV for non-root users, and
-                * inherit MNT_NOEXEC from the mount point.
-                */
-               if (suser(p, 0) != 0) {
-                       if (flags & MNT_EXPORTED) {
-                               vput(vp);
-                               return (EPERM);
-                       }
-                       flags |= MNT_NOSUID | MNT_NODEV;
-                       if (mntflag & MNT_NOEXEC)
-                               flags |= MNT_NOEXEC;
-               }
                if ((error = vfs_busy(mp, VB_READ|VB_NOWAIT)) != 0) {
                        vput(vp);
                        return (error);
@@ -180,30 +156,6 @@ sys_mount(struct proc *p, void *v, regis
                mp->mnt_flag |= flags & (MNT_RELOAD | MNT_UPDATE);
                goto update;
        }
-       /*
-        * If the user is not root, ensure that they own the directory
-        * onto which we are attempting to mount.
-        */
-       if ((error = VOP_GETATTR(vp, &va, p->p_ucred, p)) ||
-           (va.va_uid != p->p_ucred->cr_uid &&
-           (error = suser(p, 0)))) {
-               vput(vp);
-               return (error);
-       }
-       /*
-        * Do not allow NFS export by non-root users. Silently
-        * enforce MNT_NOSUID and MNT_NODEV for non-root users, and inherit
-        * MNT_NOEXEC from the mount point.
-        */
-       if (suser(p, 0) != 0) {
-               if (flags & MNT_EXPORTED) {
-                       vput(vp);
-                       return (EPERM);
-               }
-               flags |= MNT_NOSUID | MNT_NODEV;
-               if (vp->v_mount->mnt_flag & MNT_NOEXEC)
-                       flags |= MNT_NOEXEC;
-       }
        if ((error = vinvalbuf(vp, V_SAVE, p->p_ucred, p, 0, 0)) != 0) {
                vput(vp);
                return (error);
@@ -374,22 +326,15 @@ sys_unmount(struct proc *p, void *v, reg
        int error;
        struct nameidata nd;
 
+       if ((error = suser(p, 0)) != 0)
+               return (error);
+
        NDINIT(&nd, LOOKUP, FOLLOW | LOCKLEAF, UIO_USERSPACE,
            SCARG(uap, path), p);
        if ((error = namei(&nd)) != 0)
                return (error);
        vp = nd.ni_vp;
        mp = vp->v_mount;
-
-       /*
-        * Only root, or the user that did the original mount is
-        * permitted to unmount this filesystem.
-        */
-       if ((mp->mnt_stat.f_owner != p->p_ucred->cr_uid) &&
-           (error = suser(p, 0))) {
-               vput(vp);
-               return (error);
-       }
 
        /*
         * Don't allow unmounting the root file system.
Index: sys/msdosfs/msdosfs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/msdosfs/msdosfs_vfsops.c,v
retrieving revision 1.79
diff -u -p -r1.79 msdosfs_vfsops.c
--- sys/msdosfs/msdosfs_vfsops.c        13 Aug 2016 20:53:17 -0000      1.79
+++ sys/msdosfs/msdosfs_vfsops.c        4 Sep 2016 20:06:48 -0000
@@ -106,7 +106,6 @@ msdosfs_mount(struct mount *mp, const ch
        char fname[MNAMELEN];
        char fspec[MNAMELEN];
        int error, flags;
-       mode_t accessmode;
 
        error = copyin(data, &args, sizeof(struct msdosfs_args));
        if (error)
@@ -138,22 +137,9 @@ msdosfs_mount(struct mount *mp, const ch
                if (error)
                        return (error);
                if ((pmp->pm_flags & MSDOSFSMNT_RONLY) &&
-                   (mp->mnt_flag & MNT_WANTRDWR)) {
-                       /*
-                        * If upgrade to read-write by non-root, then verify
-                        * that user has necessary permissions on the device.
-                        */
-                       if (suser(p, 0) != 0) {
-                               devvp = pmp->pm_devvp;
-                               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-                               error = VOP_ACCESS(devvp, VREAD | VWRITE,
-                                                  p->p_ucred, p);
-                               VOP_UNLOCK(devvp, p);
-                               if (error)
-                                       return (error);
-                       }
+                   (mp->mnt_flag & MNT_WANTRDWR))
                        pmp->pm_flags &= ~MSDOSFSMNT_RONLY;
-               }
+
                if (args.fspec == NULL) {
 #ifdef __notyet__              /* doesn't work correctly with current mountd   
XXX */
                        if (args.flags & MSDOSFSMNT_MNTOPT) {
@@ -195,21 +181,6 @@ msdosfs_mount(struct mount *mp, const ch
        if (major(devvp->v_rdev) >= nblkdev) {
                error = ENXIO;
                goto error_devvp;
-       }
-
-       /*
-        * If mount by non-root, then verify that user has necessary
-        * permissions on the device.
-        */
-       if (suser(p, 0) != 0) {
-               accessmode = VREAD;
-               if ((mp->mnt_flag & MNT_RDONLY) == 0)
-                       accessmode |= VWRITE;
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p);
-               VOP_UNLOCK(devvp, p);
-               if (error)
-                       goto error_devvp;
        }
 
        if ((mp->mnt_flag & MNT_UPDATE) == 0)
Index: sys/ntfs/ntfs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/ntfs/ntfs_vfsops.c,v
retrieving revision 1.54
diff -u -p -r1.54 ntfs_vfsops.c
--- sys/ntfs/ntfs_vfsops.c      1 Sep 2016 08:40:39 -0000       1.54
+++ sys/ntfs/ntfs_vfsops.c      4 Sep 2016 20:13:08 -0000
@@ -187,18 +187,6 @@ ntfs_mount(struct mount *mp, const char 
                goto error_2;
        }
 
-       /*
-        * If we are not root, make sure we have permission to access the
-        * requested device.
-        */
-       if (p->p_ucred->cr_uid) {
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               err = VOP_ACCESS(devvp, VREAD, p->p_ucred, p);
-               VOP_UNLOCK(devvp, p);
-               if (err)
-                       goto error_2;
-       }
-
        if (mp->mnt_flag & MNT_UPDATE) {
 #if 0
                /*
Index: sys/sys/sysctl.h
===================================================================
RCS file: /cvs/src/sys/sys/sysctl.h,v
retrieving revision 1.164
diff -u -p -r1.164 sysctl.h
--- sys/sys/sysctl.h    4 Sep 2016 09:22:29 -0000       1.164
+++ sys/sys/sysctl.h    4 Sep 2016 21:06:28 -0000
@@ -130,7 +130,7 @@ struct ctlname {
 #define        KERN_OSVERSION          27      /* string: kernel build version 
*/
 #define        KERN_SOMAXCONN          28      /* int: listen queue maximum */
 #define        KERN_SOMINCONN          29      /* int: half-open controllable 
param */
-#define        KERN_USERMOUNT          30      /* int: users may mount 
filesystems */
+/* was KERN_USERMOUNT          30      */
 /* was KERN_RND        31                      */
 #define        KERN_NOSUIDCOREDUMP     32      /* int: no setuid coredumps 
ever */ 
 #define        KERN_FSYNC              33      /* int: file synchronization 
support */
@@ -217,7 +217,7 @@ struct ctlname {
        { "osversion", CTLTYPE_STRING }, \
        { "somaxconn", CTLTYPE_INT }, \
        { "sominconn", CTLTYPE_INT }, \
-       { "usermount", CTLTYPE_INT }, \
+       { "gap", 0 }, \
        { "random", CTLTYPE_STRUCT }, \
        { "nosuidcoredump", CTLTYPE_INT }, \
        { "fsync", CTLTYPE_INT }, \
Index: sys/ufs/ext2fs/ext2fs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/ufs/ext2fs/ext2fs_vfsops.c,v
retrieving revision 1.95
diff -u -p -r1.95 ext2fs_vfsops.c
--- sys/ufs/ext2fs/ext2fs_vfsops.c      13 Aug 2016 21:28:09 -0000      1.95
+++ sys/ufs/ext2fs/ext2fs_vfsops.c      4 Sep 2016 20:14:49 -0000
@@ -170,7 +170,6 @@ ext2fs_mount(struct mount *mp, const cha
        char fname[MNAMELEN];
        char fspec[MNAMELEN];
        int error, flags;
-       mode_t accessmode;
 
        error = copyin(data, &args, sizeof(struct ufs_args));
        if (error)
@@ -204,19 +203,6 @@ ext2fs_mount(struct mount *mp, const cha
                                return (error);
                }
                if (fs->e2fs_ronly && (mp->mnt_flag & MNT_WANTRDWR)) {
-                       /*
-                        * If upgrade to read-write by non-root, then verify
-                        * that user has necessary permissions on the device.
-                        */
-                       if (suser(p, 0) != 0) {
-                               devvp = ump->um_devvp;
-                               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-                               error = VOP_ACCESS(devvp, VREAD | VWRITE,
-                                   p->p_ucred, p);
-                               VOP_UNLOCK(devvp, p);
-                               if (error)
-                                       return (error);
-                       }
                        fs->e2fs_ronly = 0;
                        if (fs->e2fs.e2fs_state == E2FS_ISCLEAN)
                                fs->e2fs.e2fs_state = 0;
@@ -255,20 +241,6 @@ ext2fs_mount(struct mount *mp, const cha
        if (major(devvp->v_rdev) >= nblkdev) {
                error = ENXIO;
                goto error_devvp;
-       }
-       /*
-        * If mount by non-root, then verify that user has necessary
-        * permissions on the device.
-        */
-       if (suser(p, 0) != 0) {
-               accessmode = VREAD;
-               if ((mp->mnt_flag & MNT_RDONLY) == 0)
-                       accessmode |= VWRITE;
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p);
-               VOP_UNLOCK(devvp, p);
-               if (error)
-                       goto error_devvp;
        }
        if ((mp->mnt_flag & MNT_UPDATE) == 0)
                error = ext2fs_mountfs(devvp, mp, p);
Index: sys/ufs/ffs/ffs_vfsops.c
===================================================================
RCS file: /cvs/src/sys/ufs/ffs/ffs_vfsops.c,v
retrieving revision 1.162
diff -u -p -r1.162 ffs_vfsops.c
--- sys/ufs/ffs/ffs_vfsops.c    13 Aug 2016 21:28:09 -0000      1.162
+++ sys/ufs/ffs/ffs_vfsops.c    4 Sep 2016 20:14:33 -0000
@@ -213,7 +213,6 @@ ffs_mount(struct mount *mp, const char *
        char fspec[MNAMELEN];
        int error = 0, flags;
        int ronly;
-       mode_t accessmode;
 
        error = copyin(data, &args, sizeof(struct ufs_args));
        if (error)
@@ -305,19 +304,6 @@ ffs_mount(struct mount *mp, const char *
                        goto error_1;
 
                if (ronly && (mp->mnt_flag & MNT_WANTRDWR)) {
-                       /*
-                        * If upgrade to read-write by non-root, then verify
-                        * that user has necessary permissions on the device.
-                        */
-                       if (suser(p, 0)) {
-                               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-                               error = VOP_ACCESS(devvp, VREAD | VWRITE,
-                                                  p->p_ucred, p);
-                               VOP_UNLOCK(devvp, p);
-                               if (error)
-                                       goto error_1;
-                       }
-
                        if (fs->fs_clean == 0) {
 #if 0
                                /*
@@ -394,21 +380,6 @@ ffs_mount(struct mount *mp, const char *
        if (major(devvp->v_rdev) >= nblkdev) {
                error = ENXIO;
                goto error_2;
-       }
-
-       /*
-        * If mount by non-root, then verify that user has necessary
-        * permissions on the device.
-        */
-       if (suser(p, 0)) {
-               accessmode = VREAD;
-               if ((mp->mnt_flag & MNT_RDONLY) == 0)
-                       accessmode |= VWRITE;
-               vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, p);
-               error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p);
-               VOP_UNLOCK(devvp, p);
-               if (error)
-                       goto error_2;
        }
 
        if (mp->mnt_flag & MNT_UPDATE) {

Reply via email to