Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Oct 2017 09:53:46 -0700
From:      Conrad Meyer <cem@freebsd.org>
To:        Konstantin Belousov <kib@freebsd.org>
Cc:        src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org,  svn-src-head@freebsd.org
Subject:   Re: svn commit: r324853 - in head/sys: kern sys
Message-ID:  <CAG6CVpWt1i0=sBDybavJFV%2B5J1hP%2BS2ga45M07NNoFDDx5=UoQ@mail.gmail.com>
In-Reply-To: <201710220811.v9M8Bjw5033551@repo.freebsd.org>
References:  <201710220811.v9M8Bjw5033551@repo.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@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@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(). */
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG6CVpWt1i0=sBDybavJFV%2B5J1hP%2BS2ga45M07NNoFDDx5=UoQ>