On Wed, 9 Sep 2015, Dmitry Vyukov wrote: > Things do not work this way for long time. If you read > Documentation/memory-barriers.txt or ARM/POWER manual and C language > standard, you will see that memory accesses from different threads can > be reordered (as perceived by other threads). So kmalloc still can be > running when the pointer to the newly allocated object is assigned to > a global (thus making it available for other threads, which can, in > particular, call kfree). Guess this means that cachelines (A) may not have been be written back to memory when the pointer to the object is written to another cacheline(B) and that cacheline B arrives at the other processor first which has outdated cachelines A in its cache? So the other processor uses the contents of B to get to the pointer to A but then accesses outdated information since the object contents cachelines (A) have not arrive there yet? Ok lets say that is the case then any write attempt to A results in an exclusive cacheline state and at that point the cacheline is going to reflect current contents. So if kfree would write to the object then it will have the current information. Also what does it matter for kfree since the contents of the object are no longer in use? Could you please come up with a concrete example where there is brokenness that we need to consider. -- 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>