|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 2/3] xen: x86: irq: use do-while loop in create_irq()
On 28.03.2025 13:19, Volodymyr Babchuk wrote:
> While building xen with GCC 14.2.1 with "-fcondition-coverage" option,
> the compiler produces a false positive warning:
>
> arch/x86/irq.c: In function ‘create_irq’:
> arch/x86/irq.c:281:11: error: ‘desc’ may be used uninitialized
> [-Werror=maybe-uninitialized]
> 281 | ret = init_one_irq_desc(desc);
> | ^~~~~~~~~~~~~~~~~~~~~~~
> arch/x86/irq.c:269:22: note: ‘desc’ was declared here
> 269 | struct irq_desc *desc;
> | ^~~~
> cc1: all warnings being treated as errors
> make[2]: *** [Rules.mk:252: arch/x86/irq.o] Error 1
>
> The same behavior can be observed when building Xen with "-Og"
> optimization level. Fix this by using "do { } while" loop instead of
> "for" loop.
>
> Signed-off-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>
>
> ---
>
> Changes in v2:
>
> - Use do { } while loop instead of initializing desc with NULL
> ---
I'm afraid to disappoint you by saying that I liked v1 better; all it was
lacking was a comment. Such a comment is still lacking here. Without that,
someone may come and convert this back to the more normal (in this
situation) "for" loop.
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -264,15 +264,19 @@ void __init clear_irq_vector(int irq)
>
> int create_irq(nodeid_t node, bool grant_access)
> {
> - int irq, ret;
> + int ret;
> + int irq = nr_irqs_gsi;
> struct irq_desc *desc;
>
> - for (irq = nr_irqs_gsi; irq < nr_irqs; irq++)
> + if ( irq >= nr_irqs )
> + return -ENOSPC;
> +
> + do
> {
Nit: The brace goes on the same line as the "do", just like ...
> desc = irq_to_desc(irq);
> if (cmpxchg(&desc->arch.used, IRQ_UNUSED, IRQ_RESERVED) ==
> IRQ_UNUSED)
> break;
> - }
> + } while ( ++irq < nr_irqs );
... it's on the same line as the "while" here.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |