]> xenbits.xensource.com Git - xen.git/commitdiff
Arm64: adjust __irq_to_desc() to fix build with gcc14
authorJan Beulich <jbeulich@suse.com>
Tue, 24 Sep 2024 12:57:43 +0000 (14:57 +0200)
committerJan Beulich <jbeulich@suse.com>
Tue, 24 Sep 2024 12:57:43 +0000 (14:57 +0200)
With the original code I observe

In function ‘__irq_to_desc’,
    inlined from ‘route_irq_to_guest’ at arch/arm/irq.c:465:12:
arch/arm/irq.c:54:16: error: array subscript -2 is below array bounds of ‘irq_desc_t[32]’ {aka ‘struct irq_desc[32]’} [-Werror=array-bounds=]
   54 |         return &this_cpu(local_irq_desc)[irq];
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

which looks pretty bogus: How in the world does the compiler arrive at
-2 when compiling route_irq_to_guest()? Yet independent of that the
function's parameter wants to be of unsigned type anyway, as shown by
a vast majority of callers (others use plain int when they really mean
non-negative quantities). With that adjustment the code compiles fine
again.

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Michal Orzel <michal.orzel@amd.com>
master commit: 99f942f3d410059dc223ee0a908827e928ef3592
master date: 2024-08-29 10:03:53 +0200

xen/arch/arm/include/asm/irq.h
xen/arch/arm/irq.c

index c8044b0371536088ea00a14cb49ca8291feb1b91..59348a0dd43ecf3790ae22586708def4c671005a 100644 (file)
@@ -57,7 +57,7 @@ extern const unsigned int nr_irqs;
 struct irq_desc;
 struct irqaction;
 
-struct irq_desc *__irq_to_desc(int irq);
+struct irq_desc *__irq_to_desc(unsigned int irq);
 
 #define irq_to_desc(irq)    __irq_to_desc(irq)
 
index ae69fb4aeb4a3606d6d27d1ee0e756905ea5dffd..014b2d79826932f397016e34f9f856183c6f236a 100644 (file)
@@ -58,7 +58,7 @@ hw_irq_controller no_irq_type = {
 static irq_desc_t irq_desc[NR_IRQS];
 static DEFINE_PER_CPU(irq_desc_t[NR_LOCAL_IRQS], local_irq_desc);
 
-struct irq_desc *__irq_to_desc(int irq)
+struct irq_desc *__irq_to_desc(unsigned int irq)
 {
     if ( irq < NR_LOCAL_IRQS )
         return &this_cpu(local_irq_desc)[irq];