git: devfs - Fix a few more issues (3)

Matthew Dillon dillon at crater.dragonflybsd.org
Sun Mar 18 22:00:11 PDT 2018


commit 731fd4cce0c74e1622ca2d149ee5f4cc8e3adb11
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Sun Mar 18 21:57:29 2018 -0700

    devfs - Fix a few more issues (3)
    
    * devfs_unlinkp() was improperly setting node->v_node to NULL,
      which messes up certain interlocks for race avoidance.
    
    * Use vhold()/vdrop() instead of vref()/vrele() to prevent
      vnode destruction during node teardown.  The node can be
      torndown with an unreferenced vnode.  vref() will panic if
      the refcnt is not already > 0.
    
    * Refactor devfs_vop_reclaim() a bit.  Do not interpose the
      v_release_rdev() call between the node check and the call
      to devfs_freep().

Summary of changes:
 sys/vfs/devfs/devfs_core.c  | 39 +++++++++++++++++++++++++++++----------
 sys/vfs/devfs/devfs_vnops.c | 15 +++++++++++----
 2 files changed, 40 insertions(+), 14 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/731fd4cce0c74e1622ca2d149ee5f4cc8e3adb11


-- 
DragonFly BSD source repository


More information about the Commits mailing list