Thread (152 messages) 152 messages, 13 authors, 2016-04-14

[v3,11/41] mips: reuse asm-generic/barrier.h

From: torvalds@linux-foundation.org (Linus Torvalds)
Date: 2016-01-26 22:15:29
Also in: linux-arch, linux-mips, linux-s390, linux-sh, linux-um, linuxppc-dev, lkml, sparclinux

On Tue, Jan 26, 2016 at 12:10 PM, Paul E. McKenney
[off-list ref] wrote:
On Tue, Jan 26, 2016 at 11:44:46AM -0800, Linus Torvalds wrote:
quoted
quoted
        struct foo *x = READ_ONCE(*ptr);
        smp_read_barrier_depends();
        x->bar = 5;
This case is complete BS. Stop perpetuating it. I already removed a
number of bogus cases of it, and I removed the incorrect documentation
that had this crap.
If I understand your objection correctly, you want the above pattern
expressed either like this:

        struct foo *x = rcu_dereference(*ptr);
        x->bar = 5;

Or like this:

        struct foo *x = lockless_dereference(*ptr);
        x->bar = 5;

Or am I missing your point?
You are entirely missing the point.

You might as well just write it as

    struct foo x = READ_ONCE(*ptr);
    x->bar = 5;

because that "smp_read_barrier_depends()" does NOTHING wrt the second write.

So what I am saying is simple: anybody who writes that
"smp_read_barrier_depends()" in there is just ttoally and completely
WRONG, and the fact that Peter wrote it out after I removed several
instances of that bloody f*cking idiocy is disturbing.

Don't do it. It's BS. It's wrong. Don't make excuses for it.

             Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help