lkml.org 
[lkml]   [2014]   [Nov]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] virt: kvm: arm: vgic: Process the failure case when kvm_register_device_ops() fails
    On 11/13/2014 11:30 PM, Marc Zyngier wrote:
    > On 13/11/14 15:04, Chen Gang wrote:
    >> When kvm_register_device_ops() fails, also need call free_percpu_irq()
    >> just like others have down within kvm_vgic_hyp_init().
    >>
    >> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
    >> ---
    >> virt/kvm/arm/vgic.c | 10 ++++++++--
    >> 1 file changed, 8 insertions(+), 2 deletions(-)
    >>
    >> diff --git a/virt/kvm/arm/vgic.c b/virt/kvm/arm/vgic.c
    >> index 3aaca49..b799f17 100644
    >> --- a/virt/kvm/arm/vgic.c
    >> +++ b/virt/kvm/arm/vgic.c
    >> @@ -2470,8 +2470,14 @@ int kvm_vgic_hyp_init(void)
    >>
    >> on_each_cpu(vgic_init_maintenance_interrupt, NULL, 1);
    >>
    >> - return kvm_register_device_ops(&kvm_arm_vgic_v2_ops,
    >> - KVM_DEV_TYPE_ARM_VGIC_V2);
    >> + ret = kvm_register_device_ops(&kvm_arm_vgic_v2_ops,
    >> + KVM_DEV_TYPE_ARM_VGIC_V2);
    >> + if (ret) {
    >> + kvm_err("Cannot register device ops\n");
    >> + goto out_free_irq;
    >> + }
    >> +
    >> + return 0;
    >>
    >> out_free_irq:
    >> free_percpu_irq(vgic->maint_irq, kvm_get_running_vcpus());
    >>
    >
    > Awesome. You're now freeing a per-cpu interrupt after just after having
    > enabled it on all CPUs. What could possibly go wrong?
    >

    OK, thanks. What you said sound reasonable to me. Need call on_each_cpu
    for disable_percpu_irq(). Also need call __unregister_cpu_notifier(),
    and need a new function vgic_arch_unsetup() for arm64.

    I shall send patch v2 for it.

    Thanks.
    --
    Chen Gang

    Open share and attitude like air water and life which God blessed


    \
     
     \ /
      Last update: 2014-11-14 15:41    [W:5.434 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site