Re: [patch] KVM: return an error code in kvm_vm_ioctl_register_coalesced_mmio()

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

 



On Wed, Jan 29, 2014 at 02:57:21PM +0100, walter harms wrote:
> 
> 
> Am 29.01.2014 14:16, schrieb Dan Carpenter:
> > If kvm_io_bus_register_dev() fails then it returns success but it should
> > return an error code.
> > 
> > I also did a little cleanup like removing an impossible NULL test.
> > 
> > Fixes: 2b3c246a682c ('KVM: Make coalesced mmio use a device per zone')
> > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> > 
> > diff --git a/virt/kvm/coalesced_mmio.c b/virt/kvm/coalesced_mmio.c
> > index 88b2fe3ddf42..00d86427af0f 100644
> > --- a/virt/kvm/coalesced_mmio.c
> > +++ b/virt/kvm/coalesced_mmio.c
> > @@ -154,17 +154,13 @@ int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm,
> >  	list_add_tail(&dev->list, &kvm->coalesced_zones);
> >  	mutex_unlock(&kvm->slots_lock);
> >  
> > -	return ret;
> > +	return 0;
> >  
> >  out_free_dev:
> >  	mutex_unlock(&kvm->slots_lock);
> > -
> >  	kfree(dev);
> >  
> > -	if (dev == NULL)
> > -		return -ENXIO;
> > -
> > -	return 0;
> > +	return ret;
> >  }
> >  
> >  int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,
> 
> 
> I did not see the rest of the code, be careful ..
> 
> You can get rid of the return 0 by protecting the free(dev) like
> 
> if (ret != 0)
>    kfree(dev);
> 
> that will make the
> mutex_unlock(&kvm->slots_lock);
> return 0;
> 
> obsolet. (simply set ret=0 if needed).

It's better to have a clean separation of success and error path.  The
success path should "return 0;" and not "return ret;"

[ I spent thirty minutes here ranting about the right way to do error
  paths but then I deleted it.  :P  ].

regards,
dan carpenter
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux