svn commit: r255880 - head/sys/kern
Konstantin Belousov
kib at FreeBSD.org
Thu Sep 26 13:14:52 UTC 2013
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 <patfbsd at 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*/
More information about the svn-src-all
mailing list