On Thu, 2 Nov 2017 13:06:05 -0400 Steven Rostedt <rostedt@xxxxxxxxxxx> wrote: > + raw_spin_lock(&console_owner_lock); > + waiter = console_waiter; > + console_owner = NULL; > + raw_spin_unlock(&console_owner_lock); > + > + /* > + * If there is a waiter waiting for us, then pass the > + * rest of the work load over to that waiter. > + */ > + if (waiter) > + break; > + Hmm, do I need a READ_ONCE() here? Can gcc do the load of console_waiter outside the spin lock where if (waiter) is done? Although it doesn't really matter, but it just makes the code more fragile if it can. Should this be: raw_spin_lock(&console_owner_lock); waiter = READ_ONCE(console_waiter); console_owner = NULL; raw_spin_unlock(&console_owner_lock); /* * If there is a waiter waiting for us, then pass the * rest of the work load over to that waiter. */ if (waiter) break; ? -- Steve -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>