Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Jan 2019 21:36:45 +0000 (UTC)
From:      Kirk McKusick <mckusick@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r343536 - head/sys/ufs/ffs
Message-ID:  <201901282136.x0SLajGc048223@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mckusick
Date: Mon Jan 28 21:36:45 2019
New Revision: 343536
URL: https://svnweb.freebsd.org/changeset/base/343536

Log:
  This bug was introduced with the change to use softdep_bp_to_mp() in
  January 2018 changes -r327723 and -r327821. The softdep_bp_to_mp()
  function failed to include VFIFO as one of the valid cases.
  
  Although fifo's do not allocate blocks in the filesystem, they will
  allocate blocks if they use extended attributes (such as ACLs). Thus,
  softdep_bp_to_mp() needs to return a non-NULL mount pointer when
  presented with a fifo vnode so that the soft updates write complete
  will properly process the soft updates structures associated with the
  extended attribute blocks. It was the failure to process these soft
  updates structures, thus leaving them hanging off the buffer, which
  lead to the "panic: softdep_deallocate_dependencies: dangling deps"
  when trying to clean up the buffer after it was written.
  
  PR:           230962
  Reported by:  2t8mr7kx9f@protonmail.com
  Reviewed by:  kib
  Tested by:    Peter Holm
  MFC after:    1 week
  Sponsored by: Netflix

Modified:
  head/sys/ufs/ffs/ffs_softdep.c

Modified: head/sys/ufs/ffs/ffs_softdep.c
==============================================================================
--- head/sys/ufs/ffs/ffs_softdep.c	Mon Jan 28 20:30:04 2019	(r343535)
+++ head/sys/ufs/ffs/ffs_softdep.c	Mon Jan 28 21:36:45 2019	(r343536)
@@ -13983,7 +13983,7 @@ retry:
 		if (mp == NULL)
 			goto retry;
 	} else if (vp->v_type == VREG || vp->v_type == VDIR ||
-	    vp->v_type == VLNK) {
+	    vp->v_type == VLNK || vp->v_type == VFIFO) {
 		mp = vp->v_mount;
 	} else {
 		return (NULL);



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