For example, in the following scenario, Process2 may get the wrong value; Process1: mutex_lock(&lock); write data; (store operation) mutex_unlock(&lock);
Process2: mutex_lock(&lock); read data; (load operation) mutex_unlock(&lock); Suppose Process1 gets the lock first, write data and unlock. If the store operation completes very slowly, the load operation of the Process2 will fail to get the new value. Since there are no dmb instructions in the mutex_lock and mutex_unlock, which doesn't make sure that after Process2 gets the lock, the result of the Process1's store operation will be seen by the Process2. 2012/7/13 Li Haifeng <omy...@gmail.com>: > Hi Shan, > > 2012/7/12 shan kang <kangshan0...@gmail.com>: >> Hello, >> I wonder why smp_mb() is not needed in the "__mutex_fastpath_lock" >> and "__mutex_fastpath_unlock" functions which are located in the >> "arch/arm/include/asm/mutex.h"? >> I think "dmb" instruction is necessary there. > > Why necessary? Could you explain more detailed? > >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-ker...@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/