On 31/08/2016 19:05, Luiz Capitulino wrote:
> Memory and debugfs entries are leaked on error. Fix it.
> 
> Signed-off-by: Luiz Capitulino <[email protected]>
> ---
>  virt/kvm/kvm_main.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index c1dc45e..9293285 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -585,12 +585,12 @@ static int kvm_create_vm_debugfs(struct kvm *kvm, int 
> fd)
>                                        sizeof(*kvm->debugfs_stat_data),
>                                        GFP_KERNEL);
>       if (!kvm->debugfs_stat_data)
> -             return -ENOMEM;
> +             goto out_err;
>  
>       for (p = debugfs_entries; p->name; p++) {
>               stat_data = kzalloc(sizeof(*stat_data), GFP_KERNEL);
>               if (!stat_data)
> -                     return -ENOMEM;
> +                     goto out_err;
>  
>               stat_data->kvm = kvm;
>               stat_data->offset = p->offset;
> @@ -599,9 +599,13 @@ static int kvm_create_vm_debugfs(struct kvm *kvm, int fd)
>                                        kvm->debugfs_dentry,
>                                        stat_data,
>                                        stat_fops_per_vm[p->kind]))
> -                     return -ENOMEM;
> +                     goto out_err;
>       }
>       return 0;
> +
> +out_err:
> +     kvm_destroy_vm_debugfs(kvm);
> +     return -ENOMEM;
>  }
>  
>  static struct kvm *kvm_create_vm(unsigned long type)
> 

Reviewed-by: Paolo Bonzini <[email protected]>

Reply via email to