Page MenuHomeFreeBSD

D28821.id.diff
No OneTemporary

D28821.id.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
Wed, Feb 11, 11:03 PM (12 h, 52 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28659777
Default Alt Text
D28821.id.diff (579 B)

Event Timeline