On 12/07/2016 08:28 PM, Gonglei (Arei) wrote: >> As far as I'm aware, other projects usually have a special memset >> variation for doing this. That is because compilers may choose to >> "optimize" memset(p, ...) + free(p) to just the free(p). Having a > > Actually, I googled this, but I didn't find a definite answer. And > > The Linux kernel uses kzfree instead of memset + kfree (mm/slab_common.c).
If we're worried about cleaning things without allowing the compiler a chance to optimize, then writing our own qemu_zfree() wrapper may indeed make sense. But that won't cover the case in Daniel's earlier patch (referenced elsewhere in this thread), as that was zeroizing stack memory (before it went out of scope) rather than heap memory (before free). So you'd still need some sort of 'write this memory no matter what' primitive that would be directly usable on stack memory and indirectly used as part of the qemu_zfree() wrapper. But I wouldn't worry about it for now, unless someone proves we actually have a compiler optimizing away the cleanups. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature