]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xen/events: Add WARN_ON when quick lookup found invalid type.
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 23 May 2012 17:28:44 +0000 (13:28 -0400)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Wed, 23 May 2012 18:21:06 +0000 (14:21 -0400)
All of the bind_XYZ_to_irq do a quick lookup to see if the
event exists. And if they that value is returned instead of
initialized. This patch adds an extra logic to check that the
type returned is the proper one and we can use it to find
drivers that are doing something naught.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
drivers/xen/events.c

index b76706a404f793cff703e27c81440b10937ec7af..1df815f1f065ecf0c7534c71386b077f5ee60239 100644 (file)
@@ -827,6 +827,9 @@ int bind_evtchn_to_irq(unsigned int evtchn)
                                              handle_edge_irq, "event");
 
                xen_irq_info_evtchn_init(irq, evtchn);
+       } else {
+               struct irq_info *info = info_for_irq(irq);
+               WARN_ON(info && info->type != IRQT_EVTCHN);
        }
 
 out:
@@ -862,8 +865,10 @@ static int bind_ipi_to_irq(unsigned int ipi, unsigned int cpu)
                xen_irq_info_ipi_init(cpu, irq, evtchn, ipi);
 
                bind_evtchn_to_cpu(evtchn, cpu);
+       } else {
+               struct irq_info *info = info_for_irq(irq);
+               WARN_ON(info && info->type != IRQT_IPI);
        }
-
  out:
        mutex_unlock(&irq_mapping_update_lock);
        return irq;
@@ -939,8 +944,10 @@ int bind_virq_to_irq(unsigned int virq, unsigned int cpu)
                xen_irq_info_virq_init(cpu, irq, evtchn, virq);
 
                bind_evtchn_to_cpu(evtchn, cpu);
+       } else {
+               struct irq_info *info = info_for_irq(irq);
+               WARN_ON(info && info->type != IRQT_VIRQ);
        }
-
 out:
        mutex_unlock(&irq_mapping_update_lock);