[v4,11/13] x86/IRQ: tighten vector checks
diff mbox series

Message ID 72140e85-8444-4a51-358e-2cc297f86249@suse.com
State New
Headers show
Series
  • [v4,01/13] x86/IRQ: deal with move-in-progress state in fixup_irqs()
Related show

Commit Message

Jan Beulich July 16, 2019, 7:43 a.m. UTC
Use valid_irq_vector() rather than "> 0".

Also replace an open-coded use of IRQ_VECTOR_UNASSIGNED.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Roger Pau Monné <roger.pau@citrix.com>
Acked-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
v3: New.

Patch
diff mbox series

--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -342,7 +342,7 @@  void clear_irq_vector(int irq)
  
  int irq_to_vector(int irq)
  {
-    int vector = -1;
+    int vector = IRQ_VECTOR_UNASSIGNED;
  
      BUG_ON(irq >= nr_irqs || irq < 0);
  
@@ -452,15 +452,18 @@  static vmask_t *irq_get_used_vector_mask
              int vector;
              
              vector = irq_to_vector(irq);
-            if ( vector > 0 )
+            if ( valid_irq_vector(vector) )
              {
-                printk(XENLOG_INFO "IRQ %d already assigned vector %d\n",
+                printk(XENLOG_INFO "IRQ%d already assigned vector %02x\n",
                         irq, vector);
                  
                  ASSERT(!test_bit(vector, ret));
  
                  set_bit(vector, ret);
              }
+            else if ( vector != IRQ_VECTOR_UNASSIGNED )
+                printk(XENLOG_WARNING "IRQ%d mapped to bogus vector %02x\n",
+                       irq, vector);
          }
      }
      else if ( IO_APIC_IRQ(irq) &&
@@ -491,7 +494,7 @@  static int _assign_irq_vector(struct irq
      vmask_t *irq_used_vectors = NULL;
  
      old_vector = irq_to_vector(irq);
-    if ( old_vector > 0 )
+    if ( valid_irq_vector(old_vector) )
      {
          cpumask_t tmp_mask;
  
@@ -555,7 +558,7 @@  next:
          current_vector = vector;
          current_offset = offset;
  
-        if ( old_vector > 0 )
+        if ( valid_irq_vector(old_vector) )
          {
              cpumask_and(desc->arch.old_cpu_mask, desc->arch.cpu_mask,
                          &cpu_online_map);