QReadWriteLock: fix data race in stateForWaitCondition()
The function dereferences the load()ed pointer, so it needs an acquire fence. Pick-to: 6.3 6.2 5.15 Change-Id: Ib951de3f00851d915fec3392cdaba64f4a994300 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
1c338e6d07
commit
68f220c93b
|
|
@ -414,7 +414,7 @@ void QReadWriteLock::unlock()
|
|||
/*! \internal Helper for QWaitCondition::wait */
|
||||
QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() const
|
||||
{
|
||||
QReadWriteLockPrivate *d = d_ptr.loadRelaxed();
|
||||
QReadWriteLockPrivate *d = d_ptr.loadAcquire();
|
||||
switch (quintptr(d) & StateMask) {
|
||||
case StateLockedForRead: return LockedForRead;
|
||||
case StateLockedForWrite: return LockedForWrite;
|
||||
|
|
|
|||
Loading…
Reference in New Issue