From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Mikulas Patocka <mpatocka@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
"James E.J. Bottomley" <jejb@parisc-linux.org>,
Helge Deller <deller@gmx.de>,
John David Anglin <dave.anglin@bell.net>,
Parisc List <linux-parisc@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
"Vinod, Chegu" <chegu_vinod@hp.com>,
Waiman Long <Waiman.Long@hp.com>,
Thomas Gleixner <tglx@linutronix.de>,
Rik van Riel <riel@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
Davidlohr Bueso <davidlohr@hp.com>, Peter Anvin <hpa@zytor.com>,
Andi Kleen <andi@firstfloor.org>,
"Chandramouleeswaran, Aswin" <aswin@hp.com>,
"Norton, Scott J" <scott.norton@hp.com>,
Jason Low <jason.low2@hp.com>,
sparse@chrisli.org
Subject: Re: [PATCH v2] introduce atomic_pointer to fix a race condition in cancelable mcs spinlocks
Date: Tue, 3 Jun 2014 08:56:18 -0700 [thread overview]
Message-ID: <20140603155618.GR22231@linux.vnet.ibm.com> (raw)
In-Reply-To: <20140603150908.GW30445@twins.programming.kicks-ass.net>
On Tue, Jun 03, 2014 at 05:09:08PM +0200, Peter Zijlstra wrote:
> On Tue, Jun 03, 2014 at 07:07:27AM -0700, Paul E. McKenney wrote:
> > On Tue, Jun 03, 2014 at 09:36:13AM +0200, Peter Zijlstra wrote:
> > >
> > > #ifdef __CHECKER__
> > > #define __atomic __attribute__((address_space(5)))
> > > #else
> > > #define __atomic
> > > #endif
> > >
> > > #define store(p, v) (*(p) = (typeof(*(p)) __force __atomic)(v))
> > > #define load(p) ((typeof(*p) __force)ACCESS_ONCE(*(p)))
> > >
> > > Along with changes to xchg() and cmpxchg() that require them to take
> > > pointers to __atomic.
> > >
> > > That way we keep the flexibility of xchg() and cmpxchg() for being
> > > (mostly) type and size invariant, and get sparse to find wrong usage.
> > >
> > > Then parisc, sparc32, tile32, metag-lock1 and arc-!llsc can go implement
> > > store() however they like.
> >
> > Should be fun interacting with atomic operations on __rcu variables
> > (address space 4). Of course, that is already fun...
> >
>
> Hmm, good point, I suppose sparse doesn't like two different
> address_space annotations on the same variable ?
>
> /me adds Christpoher Li to the CC list.
>
> ISTR Mikulas actually listing one such, me digs in recent email..
>
> > $ grep -w "fdt->fd" */*.c
> > fs/file.c: free_fdmem(fdt->fd);
> > fs/file.c: fdt->fd = data;
> > fs/file.c: free_fdmem(fdt->fd);
> > fs/file.c: struct file * file = xchg(&fdt->fd[i], NULL);
>
> So yes, that's going to be fun, mostly because rcu_assign_pointer()
> doesn't actually do the right magic for this to be safe on their
> platform(s).
Maybe at some point sparse needs to keep a bit mask for the address
spaces, so that you caould say somthing like:
struct foo __atomic __rcu *p;
Thanx, Paul
next prev parent reply other threads:[~2014-06-03 15:56 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-01 17:53 [PATCH] fix a race condition in cancelable mcs spinlocks Mikulas Patocka
2014-06-01 19:20 ` Peter Zijlstra
2014-06-01 20:46 ` John David Anglin
2014-06-01 21:30 ` Peter Zijlstra
2014-06-01 21:46 ` Paul E. McKenney
2014-06-02 9:19 ` Mikulas Patocka
2014-06-02 13:24 ` Paul E. McKenney
2014-06-02 15:57 ` Mikulas Patocka
2014-06-02 16:39 ` Paul E. McKenney
2014-06-02 19:56 ` James Bottomley
2014-06-03 7:56 ` Peter Zijlstra
2014-06-04 12:53 ` Mikulas Patocka
2014-06-02 13:58 ` Mikulas Patocka
2014-06-02 14:02 ` Mikulas Patocka
2014-06-02 15:39 ` John David Anglin
2014-06-02 10:34 ` Mikulas Patocka
2014-06-02 14:14 ` Waiman Long
2014-06-02 15:27 ` Jason Low
2014-06-02 16:00 ` [PATCH v2] introduce atomic_pointer to " Mikulas Patocka
2014-06-02 16:25 ` Peter Zijlstra
2014-06-02 16:30 ` Peter Zijlstra
2014-06-02 16:46 ` Paul E. McKenney
2014-06-02 17:33 ` Waiman Long
2014-06-02 20:05 ` Peter Zijlstra
2014-06-02 20:22 ` Linus Torvalds
2014-06-02 21:02 ` Paul E. McKenney
2014-06-02 21:12 ` Linus Torvalds
2014-06-02 22:08 ` Paul E. McKenney
2014-06-02 22:44 ` Eric Dumazet
2014-06-02 23:17 ` Paul E. McKenney
2014-06-02 23:53 ` Eric Dumazet
2014-06-03 0:28 ` Paul E. McKenney
2014-06-02 22:55 ` Linus Torvalds
2014-06-03 16:48 ` Paul E. McKenney
2014-06-03 7:54 ` Peter Zijlstra
2014-06-02 20:24 ` James Bottomley
2014-06-02 16:43 ` Paul E. McKenney
2014-06-02 17:14 ` James Bottomley
2014-06-02 17:29 ` Waiman Long
2014-06-02 17:09 ` Linus Torvalds
2014-06-02 17:12 ` Davidlohr Bueso
2014-06-02 17:42 ` Waiman Long
2014-06-02 20:46 ` Mikulas Patocka
2014-06-02 20:53 ` Linus Torvalds
2014-06-02 21:12 ` Mikulas Patocka
2014-06-03 7:36 ` Peter Zijlstra
2014-06-03 11:14 ` Mikulas Patocka
2014-06-03 13:24 ` Peter Zijlstra
2014-06-03 14:18 ` Mikulas Patocka
2014-06-03 14:07 ` Paul E. McKenney
2014-06-03 15:09 ` Peter Zijlstra
2014-06-03 15:56 ` Paul E. McKenney [this message]
2014-06-03 7:20 ` Peter Zijlstra
2014-06-02 21:03 ` Paul E. McKenney
2014-06-06 15:06 ` Peter Zijlstra
2014-06-06 15:15 ` Paul E. McKenney
2014-06-06 15:42 ` Davidlohr Bueso
2014-06-02 16:50 ` Jason Low
2014-06-02 17:03 ` Paul E. McKenney
2014-06-02 17:25 ` Waiman Long
2014-06-02 17:38 ` H. Peter Anvin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140603155618.GR22231@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=Waiman.Long@hp.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=aswin@hp.com \
--cc=chegu_vinod@hp.com \
--cc=dave.anglin@bell.net \
--cc=davidlohr@hp.com \
--cc=deller@gmx.de \
--cc=hpa@zytor.com \
--cc=jason.low2@hp.com \
--cc=jejb@parisc-linux.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=peterz@infradead.org \
--cc=riel@redhat.com \
--cc=scott.norton@hp.com \
--cc=sparse@chrisli.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.