Author: kib
Date: Thu Sep 26 13:14:51 2013
New Revision: 255880
URL: http://svnweb.freebsd.org/changeset/base/255880

Log:
  Acquire a hold reference on the vnode when a knote is instantiated.
  Otherwise, knote keeps a pointer to a vnode which could become invalid
  any time.
  
  Reported by:  many
  Tested by:    Patrick Lamaiziere <patf...@davenulle.org>
  Discussed with:       jmg
  Sponsored by: The FreeBSD Foundation
  MFC after:    1 week
  Approved by:  re (marius)

Modified:
  head/sys/kern/vfs_subr.c

Modified: head/sys/kern/vfs_subr.c
==============================================================================
--- head/sys/kern/vfs_subr.c    Thu Sep 26 13:13:12 2013        (r255879)
+++ head/sys/kern/vfs_subr.c    Thu Sep 26 13:14:51 2013        (r255880)
@@ -4398,6 +4398,7 @@ vfs_kqfilter(struct vop_kqfilter_args *a
        if (vp->v_pollinfo == NULL)
                return (ENOMEM);
        knl = &vp->v_pollinfo->vpi_selinfo.si_note;
+       vhold(vp);
        knlist_add(knl, kn, 0);
 
        return (0);
@@ -4413,6 +4414,7 @@ filt_vfsdetach(struct knote *kn)
 
        KASSERT(vp->v_pollinfo != NULL, ("Missing v_pollinfo"));
        knlist_remove(&vp->v_pollinfo->vpi_selinfo.si_note, kn, 0);
+       vdrop(vp);
 }
 
 /*ARGSUSED*/
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to