kn->kn_flags |= (EV_EOF | EV_ONESHOT);
return(1);
}
+
+ /*
+ * Interlock against MP races when performing this function.
+ */
+ lwkt_gettoken(&vp->v_mount->mnt_token);
off = node->tn_size - kn->kn_fp->f_offset;
kn->kn_data = (off < INTPTR_MAX) ? off : INTPTR_MAX;
- if (kn->kn_sfflags & NOTE_OLDAPI)
+ if (kn->kn_sfflags & NOTE_OLDAPI) {
+ lwkt_reltoken(&vp->v_mount->mnt_token);
return(1);
+ }
- /*
- * Handle possible MP race interlock on filter check/write
- */
if (kn->kn_data == 0) {
kn->kn_data = (off < INTPTR_MAX) ? off : INTPTR_MAX;
}
+ lwkt_reltoken(&vp->v_mount->mnt_token);
return (kn->kn_data != 0);
}