Re: Is it OK to pass non-acquired objects to kfree?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]