Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Oct 2017 08:11:45 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r324853 - in head/sys: kern sys
Message-ID:  <201710220811.v9M8Bjw5033551@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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?201710220811.v9M8Bjw5033551>