svn commit: r324853 - in head/sys: kern sys
Konstantin Belousov
kib at FreeBSD.org
Sun Oct 22 08:11:47 UTC 2017
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