svn commit: r324853 - in head/sys: kern sys

Conrad Meyer cem at freebsd.org
Sun Oct 22 16:53:49 UTC 2017


Thanks!

For other users that managed to create such files: fsck will clean them up.

Best,
Conrad

On Sun, Oct 22, 2017 at 1:11 AM, Konstantin Belousov <kib at freebsd.org> wrote:
> Author: kib
> Date: Sun Oct 22 08:11:45 2017
> New Revision: 324853
> URL: https://svnweb.freebsd.org/changeset/base/324853
>
> Log:
>   Remove the support for mknod(S_IFMT), which created dummy vnodes with
>   VBAD type.
>
>   FFS ffs_write() VOP catches such vnodes and panics, other VOPs do not
>   check for the type and their behaviour is really undefined.  The
>   comment claims that this support was done for 'badsect' to flag bad
>   sectors, we do not have such facility in kernel anyway.
>
>   Reported by:  Dmitry Vyukov <dvyukov at google.com>
>   Sponsored by: The FreeBSD Foundation
>   MFC after:    1 week
>
> Modified:
>   head/sys/kern/vfs_syscalls.c
>   head/sys/sys/priv.h
>
> Modified: head/sys/kern/vfs_syscalls.c
> ==============================================================================
> --- head/sys/kern/vfs_syscalls.c        Sun Oct 22 07:58:28 2017        (r324852)
> +++ head/sys/kern/vfs_syscalls.c        Sun Oct 22 08:11:45 2017        (r324853)
> @@ -1248,9 +1248,6 @@ kern_mknodat(struct thread *td, int fd, char *path, en
>                 if (error == 0 && dev == VNOVAL)
>                         error = EINVAL;
>                 break;
> -       case S_IFMT:
> -               error = priv_check(td, PRIV_VFS_MKNOD_BAD);
> -               break;
>         case S_IFWHT:
>                 error = priv_check(td, PRIV_VFS_MKNOD_WHT);
>                 break;
> @@ -1288,9 +1285,6 @@ restart:
>                 whiteout = 0;
>
>                 switch (mode & S_IFMT) {
> -               case S_IFMT:    /* used by badsect to flag bad sectors */
> -                       vattr.va_type = VBAD;
> -                       break;
>                 case S_IFCHR:
>                         vattr.va_type = VCHR;
>                         break;
>
> Modified: head/sys/sys/priv.h
> ==============================================================================
> --- head/sys/sys/priv.h Sun Oct 22 07:58:28 2017        (r324852)
> +++ head/sys/sys/priv.h Sun Oct 22 08:11:45 2017        (r324853)
> @@ -266,7 +266,7 @@
>  #define        PRIV_VFS_GETFH          327     /* Can retrieve file handles. */
>  #define        PRIV_VFS_GETQUOTA       328     /* getquota(). */
>  #define        PRIV_VFS_LINK           329     /* bsd.hardlink_check_uid */
> -#define        PRIV_VFS_MKNOD_BAD      330     /* Can mknod() to mark bad inodes. */
> +#define        PRIV_VFS_MKNOD_BAD      330     /* Was: mknod() can mark bad inodes. */
>  #define        PRIV_VFS_MKNOD_DEV      331     /* Can mknod() to create dev nodes. */
>  #define        PRIV_VFS_MKNOD_WHT      332     /* Can mknod() to create whiteout. */
>  #define        PRIV_VFS_MOUNT          333     /* Can mount(). */
>


More information about the svn-src-all mailing list