Page MenuHomeFreeBSD

D28821.diff
No OneTemporary

D28821.diff

diff --git a/sys/kern/kern_rmlock.c b/sys/kern/kern_rmlock.c
--- a/sys/kern/kern_rmlock.c
+++ b/sys/kern/kern_rmlock.c
@@ -362,7 +362,11 @@
/* Remove our tracker from the per-cpu list. */
rm_tracker_remove(pc, tracker);
- /* Check to see if the IPI granted us the lock after all. */
+ /*
+ * Check to see if the IPI granted us the lock after all. The load of
+ * rmp_flags must happen after the tracker is removed from the list.
+ */
+ __compiler_membar();
if (tracker->rmp_flags) {
/* Just add back tracker - we hold the lock. */
rm_tracker_add(pc, tracker);

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 25, 3:52 AM (20 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16122555
Default Alt Text
D28821.diff (579 B)

Event Timeline