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-head
mailing list