On 10/05/2016 01:01 PM, Max Reitz wrote: >> +static int blk_do_attach_dev(BlockBackend *blk, void *dev)
>> + */ >> +int blk_attach_dev(BlockBackend *blk, DeviceState *dev) >> +{ >> + return blk_do_attach_dev(blk, dev); >> +void blk_attach_dev_legacy(BlockBackend *blk, void *dev) >> { >> if (blk_attach_dev(blk, dev) < 0) { > > I'd make this a blk_do_attach_dev(), but it's not syntactically wrong, > so the choice is up to you. It's technically undefined C behavior to cast from void* to an unrelated pointer and back to void* (you are only guaranteed a round trip from type to void* and back to original type, not with unrelated types). So syntactically valid but semantically undefined. On the other hand, ABI-wise, I'd be shocked if our compilers are able to exploit our use of undefined behavior. At any rate, using blk_do_attach_dev() would avoid the definedness problem, so I'd go ahead and make the change. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature