Re: [PATCH v5] futex: Remove requirement for lock_page in get_futex_key

From: Davidlohr Bueso
Date: Thu Feb 04 2016 - 12:43:57 EST


On Thu, 04 Feb 2016, Thomas Gleixner wrote:

On Wed, 3 Feb 2016, Davidlohr Bueso wrote:
+ * We are not calling into get_futex_key_refs() in file-backed
+ * cases, therefore a successful atomic_inc return below will
+ * guarantee that get_futex_key() will continue to imply MB (B).

Can you please make that "MB (B)" part a bit more outstanding. I really had to
search for it.

Hmm as you know this is mostly explained at the begining of the file, and we
sprinkle MB (B) around the code based on that description. So I'm a bit confused
as to why you don't like like that comment.

+ */
+ if (WARN_ON_ONCE(!atomic_inc_not_zero(&inode->i_count))) {
+ rcu_read_unlock();
+ put_page(page);
+
+ goto again;
+ }

Don't we need

smp_mb__after_atomic();

here to make it a full barrier on all architectures?

I had this initially but, as Peter mentioned, we get that barrier with the
successful atomic_inc_not_zero call anyway. Or is it something else you had
in mind?

Thanks,
Davidlohr