From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: Re: missing lock in percpu_rwlock? (Was: Re: New Defects reported by Coverity Scan for XenProject) Date: Wed, 3 Feb 2016 10:50:12 +0000 Message-ID: <56B1DB64.8040402@citrix.com> References: <56b180c017d5f_214fb5b3143623f@ss1435.mail> <1454496349.25207.54.camel@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1454496349.25207.54.camel@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Ian Campbell , Malcolm Crossley Cc: George Dunlap , Jan Beulich , xen-devel List-Id: xen-devel@lists.xenproject.org On 03/02/16 10:45, Ian Campbell wrote: > On Tue, 2016-02-02 at 20:23 -0800, scan-admin@coverity.com wrote: >> * CID 1351223: Concurrent data access violations (MISSING_LOCK) >> /xen/include/xen/spinlock.h: 362 in _percpu_write_unlock() > Coverity seems to think this is new in 41b0aa569adb..9937763265d, > presumably due to > > commit f9dd43dddc0a31a4343a58072935c1b5c0cbbee > Author: Malcolm Crossley > Date: Fri Jan 22 16:04:41 2016 +0100 > > rwlock: add per-cpu reader-writer lock infrastructure Expected behaviour. writer_activating is expected to only be written under lock, but read without lock. ~Andrew > >> _________________________________________________________________________ >> _______________________________ >> *** CID 1351223: Concurrent data access violations (MISSING_LOCK) >> /xen/include/xen/spinlock.h: 362 in _percpu_write_unlock() >> 356 percpu_rwlock_t *percpu_rwlock) >> 357 { >> 358 /* Validate the correct per_cpudata variable has been >> provided. */ >> 359 _percpu_rwlock_owner_check(per_cpudata, percpu_rwlock); >> 360 >> 361 ASSERT(percpu_rwlock->writer_activating); >>>>> CID 1351223: Concurrent data access violations (MISSING_LOCK) >>>>> Accessing "percpu_rwlock->writer_activating" without holding lock >> "percpu_rwlock.rwlock". Elsewhere, "percpu_rwlock.writer_activating" is >> accessed with "percpu_rwlock.rwlock" held 1 out of 2 times (1 of these >> accesses strongly imply that it is necessary). >> 362 percpu_rwlock->writer_activating = 0; >> 363 write_unlock(&percpu_rwlock->rwlock); >> 364 } >> 365 >> 366 #define percpu_rw_is_write_locked(l) >> _rw_is_write_locked(&((l)->rwlock)) >> 367 > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xen.org > http://lists.xen.org/xen-devel