I think that Matt's point was that the code is buggy regardless of any
ctor or not.
If you make an allocation visible to other CPU's, you would need to make
sure that allocation is stable with a smp_wmb() before you update the
pointer to that allocation.
So the code that makes a page visible should just always do that
synchronization.
And it has nothing to do with ctors or not. It's true whether you do the
initialization by hand, or whether you use a ctor.
And more importantly, putting the write barrier in the ctor or in the
memory allocator is simply broken. It's not a ctor/allocator issue. Why?
Because even if you have a ctor, there is absolutely *nothing* that says
that the ctor will be sufficient to initialize everything. Most ctors, in
fact, are just initializing the basic fields - the person that does the
allocation should finish things up.
The fact that _some_ people using an allocator with a ctor may not do
anything but the ctor to the page is immaterial.
Linus
--