Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Sep 2010 18:37:42 +0000 (UTC)
From:      Jaakko Heinonen <jh@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r212826 - head/sys/fs/devfs
Message-ID:  <201009181837.o8IIbg20074321@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jh
Date: Sat Sep 18 18:37:41 2010
New Revision: 212826
URL: http://svn.freebsd.org/changeset/base/212826

Log:
  - For consistency, remove "." and ".." entries from de_dlist before
    calling devfs_delete() (and thus possibly dropping dm_lock) in
    devfs_rmdir_empty().
  - Assert that we don't return doomed entries from devfs_find(). [1]
  
  Suggested by:	kib [1]
  Reviewed by:	kib

Modified:
  head/sys/fs/devfs/devfs_devs.c

Modified: head/sys/fs/devfs/devfs_devs.c
==============================================================================
--- head/sys/fs/devfs/devfs_devs.c	Sat Sep 18 16:57:05 2010	(r212825)
+++ head/sys/fs/devfs/devfs_devs.c	Sat Sep 18 18:37:41 2010	(r212826)
@@ -171,6 +171,8 @@ devfs_find(struct devfs_dirent *dd, cons
 			continue;
 		break;
 	}
+	KASSERT(de == NULL || (de->de_flags & DE_DOOMED) == 0,
+	    ("devfs_find: returning a doomed entry"));
 	return (de);
 }
 
@@ -302,6 +304,8 @@ devfs_rmdir_empty(struct devfs_mount *dm
 
 		dd = devfs_parent_dirent(de);
 		KASSERT(dd != NULL, ("devfs_rmdir_empty: NULL dd"));
+		TAILQ_REMOVE(&de->de_dlist, de_dot, de_list);
+		TAILQ_REMOVE(&de->de_dlist, de_dotdot, de_list);
 		TAILQ_REMOVE(&dd->de_dlist, de, de_list);
 		DEVFS_DE_HOLD(dd);
 		devfs_delete(dm, de, DEVFS_DEL_NORECURSE);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009181837.o8IIbg20074321>