Index: kern_srp.c =================================================================== RCS file: /cvs/src/sys/kern/kern_srp.c,v retrieving revision 1.1 diff -u -p -r1.1 kern_srp.c --- kern_srp.c 2 Jul 2015 01:34:00 -0000 1.1 +++ kern_srp.c 23 Aug 2015 04:26:40 -0000 @@ -204,7 +204,6 @@ srp_enter(struct srp *srp) panic("%s: not enough srp hazard records", __func__); hzrd->sh_p = srp; - membar_producer(); /* * ensure we update this cpu's hazard pointer to a value that's still @@ -229,7 +228,7 @@ srp_leave(struct srp *srp, void *v) for (i = 0; i < nitems(ci->ci_srp_hazards); i++) { hzrd = &ci->ci_srp_hazards[i]; - if (hzrd->sh_p == srp) { + if (hzrd->sh_p == srp && hzrd->sh_v == v) { hzrd->sh_p = NULL; hzrd->sh_v = NULL; return;