Il 16/01/2014 13:44, Christian Borntraeger ha scritto:
> +DEFINE_STATIC_SRCU(irq_srcu);
> +
>  bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, unsigned pin)
>  {
>       struct kvm_irq_ack_notifier *kian;
> -     int gsi;
> +     int gsi, idx;
>  
> -     rcu_read_lock();
> -     gsi = rcu_dereference(kvm->irq_routing)->chip[irqchip][pin];
> +     idx = srcu_read_lock(&irq_srcu);
> +     gsi = srcu_dereference(kvm->irq_routing, &irq_srcu)->chip[irqchip][pin];
>       if (gsi != -1)
>               hlist_for_each_entry_rcu(kian, &kvm->irq_ack_notifier_list,
>                                        link)
> @@ -45,7 +48,7 @@ bool kvm_irq_has_notifier(struct kvm *kvm, unsigned 
> irqchip, unsigned pin)
>                               return true;
>                       }
>  
> -     rcu_read_unlock();
> +     srcu_read_unlock(&irq_srcu, idx);

Missing hunk here:

@@ -44,7 +44,7 @@ bool kvm_irq_has_notifier(struct kvm *kvm, unsigned irqchip, 
unsigned pin)
                hlist_for_each_entry_rcu(kian, &kvm->irq_ack_notifier_list,
                                         link)
                        if (kian->gsi == gsi) {
-                               rcu_read_unlock();
+                               srcu_read_unlock(&irq_srcu, idx);
                                return true;
                        }
 

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

Reply via email to