On Sun, Aug 09, 2015 at 07:55:39PM +0200, Manfred Spraul wrote: > sem_lock() did not properly pair memory barriers: > > !spin_is_locked() and spin_unlock_wait() are both only control barriers. > The code needs an acquire barrier, otherwise the cpu might perform > read operations before the lock test. > As no primitive exists inside <include/spinlock.h> and since it seems > noone wants another primitive, the code creates a local primitive within > ipc/sem.c. > > With regards to -stable: > The change of sem_wait_array() is a bugfix, the change to sem_lock() > is a nop (just a preprocessor redefinition to improve the readability). > The bugfix is necessary for all kernels that use sem_wait_array() > (i.e.: starting from 3.10). > > Andrew: Could you include it into your tree and forward it? > > Signed-off-by: Manfred Spraul <manfred@xxxxxxxxxxxxxxxx> > Reported-by: Oleg Nesterov <oleg@xxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> Acked-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html