On Tue, Aug 14, 2012 at 10:31:09PM +0300, Michael S. Tsirkin wrote: > > > now CPU1 executes the next instruction: > > > > > > } > > > > > > which would normally return to function's caller, > > > but it has been overwritten by CPU2 so we get corruption. > > > > > > No? > > > > At the point CPU2 is unloading the module, it will be kept looping at the > > snippet Rusty pointed out because the isolation / migration steps do not mess > > with 'vb->num_pages'. The driver will only unload after leaking the total amount > > of balloon's inflated pages, which means (for this hypothetical case) CPU2 will > > wait until CPU1 finishes the putaback procedure. > > > > Yes but only until unlock finishes. The last return from function > is not guarded and can be overwritten. CPU1 will be returning to putback_balloon_page() which code is located at core mm/compaction.c, outside the driver. _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization