summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/vfs_subr.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c
index 72d41c9..aa234be 100644
--- a/sys/kern/vfs_subr.c
+++ b/sys/kern/vfs_subr.c
@@ -3247,8 +3247,14 @@ vbusy(vp)
void
v_addpollinfo(struct vnode *vp)
{
+ struct vpollinfo *vi;
- vp->v_pollinfo = uma_zalloc(vnodepoll_zone, M_WAITOK);
+ vi = uma_zalloc(vnodepoll_zone, M_WAITOK);
+ if (vp->v_pollinfo != NULL) {
+ uma_zfree(vnodepoll_zone, vi);
+ return;
+ }
+ vp->v_pollinfo = vi;
mtx_init(&vp->v_pollinfo->vpi_lock, "vnode pollinfo", NULL, MTX_DEF);
}
OpenPOWER on IntegriCloud