[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2] rwlock: allow recursive read locking when already locked in write mode

On 21.02.20 16:27, Jan Beulich wrote:
On 21.02.2020 16:23, Jürgen Groß wrote:
On 21.02.20 16:17, Jan Beulich wrote:
On 21.02.2020 16:13, Jürgen Groß wrote:
On 21.02.20 15:51, Julien Grall wrote:
You are assuming that atomic_t will always be:

     int counter;

What if we decide to turn into

     bool a;
     int counter;

As said before: then queue_write_lock_slowpath() is already broken.

Why? The atomic_*() used would still only act on the counter field
(for their actual operation, i.e. what matters to callers; the
other field(s) could be statistics or whatever).


u32 cnts;
if ( !(cnts & _QW_WMASK) &&
       (atomic_cmpxchg(&lock->cnts, cnts,
                       cnts | _QW_WAITING) == cnts) )

I must be blind then. As said, atomic_cmpxchg() would still (for the
purpose of consuming "cnts") act on only the "counter" field. It may
additionally e.g. increment a stats counter.

Oh, sorry, I misunderstood you.


Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.