On Wed, 2016-02-03 at 10:45 +0000, Ian Campbell wrote: > On Tue, 2016-02-02 at 20:23 -0800, scan-ad...@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 <malcolm.cross...@citrix.com> > Date: Fri Jan 22 16:04:41 2016 +0100 > > rwlock: add per-cpu reader-writer lock infrastructure
It also reports this one, but I suppose this is a false +ve given the name of the function. (Also note "simulatenously" should be "simultaneously") ** CID 1351220: Program hangs (LOCK) /xen/include/xen/spinlock.h: 310 in _percpu_read_lock() ________________________________________________________________________________________________________ *** CID 1351220: Program hangs (LOCK) /xen/include/xen/spinlock.h: 310 in _percpu_read_lock() 304 * Detect using a second percpu_rwlock_t simulatenously and fallback 305 * to standard read_lock. 306 */ 307 if ( unlikely(this_cpu_ptr(per_cpudata) != NULL ) ) 308 { 309 read_lock(&percpu_rwlock->rwlock); >>> CID 1351220: Program hangs (LOCK) >>> Returning without unlocking "percpu_rwlock->rwlock". 310 return; 311 } 312 313 /* Indicate this cpu is reading. */ 314 this_cpu_ptr(per_cpudata) = percpu_rwlock; 315 smp_mb(); > > > _______________________________________________________________________ > > __ > > _______________________________ > > *** 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)) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel