On Tue, 2 Apr 2013, Paul E. McKenney wrote: > So although I agree that the standard does not say as much as one might > like about volatile, ACCESS_ONCE()'s use of volatile should be expected > to work in a wide range of C compilers. ACCESS_ONCE()'s use of typeof() > might not be quite so generally applicable, but a fair range of C > compilers do seem to support typeof() as well as ACCESS_ONCE()'s use > of volatile. > Agreed and I have nothing against code that uses it in that manner based on the implementations of those compilers. The _only_ thing I've said in this thread is that ACCESS_ONCE() does not "prevent the compiler from re-fetching." The only thing that is going to prevent the compiler from doing anything is the standard and, as you eluded, it's legal for a compiler to compile code such as vma = ACCESS_ONCE(mm->mmap_cache); if (vma && vma->vm_start <= addr && vma->vm_end > addr) return vma; to be equivalent as if it had been written if (mm->mmap_cache && mm->mmap_cache->vm_start <= addr && mm->mmap_cache->vm_end > addr) return mm->mmap_cache; and still be a conforming implementation. We know gcc doesn't do that, so nobody is arguing the code in this patch as being incorrect. In fact, to remove any question about it: Acked-by: David Rientjes <rientjes@xxxxxxxxxx> However, as originally stated, I would prefer that the changelog be reworded so nobody believes ACCESS_ONCE() prevents the compiler from re-fetching anything. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>