History

ACPI: fix false-positive -Wuninitialized warning

clang gets confused by an uninitialized variable in what looks to it like a never executed code path: arch/x86/kernel/acpi/boot.c:618:13: error: variable 'polarity' is uninitialized when used here [-Werror,-Wuninitialized] polarity = polarity ? ACPI_ACTIVE_LOW : ACPI_ACTIVE_HIGH; ^~~~~~~~ arch/x86/kernel/acpi/boot.c:606:32: note: initialize the variable 'polarity' to silence this warning int rc, irq, trigger, polarity; ^ = 0 arch/x86/kernel/acpi/boot.c:617:12: error: variable 'trigger' is uninitialized when used here [-Werror,-Wuninitialized] trigger = trigger ? ACPI_LEVEL_SENSITIVE : ACPI_EDGE_SENSITIVE; ^~~~~~~ arch/x86/kernel/acpi/boot.c:606:22: note: initialize the variable 'trigger' to silence this warning int rc, irq, trigger, polarity; ^ = 0 This is unfortunately a design decision in clang and won't be fixed. Changing the acpi_get_override_irq() macro to an inline function reliably avoids the issue.

Arnd Bergmann committed 7 years ago

Commit dfd6f9a1 parent b80d6a41 file · +4 −1Browse files

Showing the changes to include/linux (1 of 1 file). Show all

Unified · Split

include/linux/acpi.h+4−1
@@ -324,7 +324,10 @@ struct irq_domain *acpi_irq_create_hierarchy(unsigned int flags, · 323 unmodified lines
324#ifdef CONFIG_X86_IO_APIC324#ifdef CONFIG_X86_IO_APIC
325extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);325extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
326#else326#else
327#define acpi_get_override_irq(gsi, trigger, polarity) (-1)327static inline int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity)
328{
329 return -1;
330}
328#endif331#endif
329/*332/*
330 * This function undoes the effect of one call to acpi_register_gsi().333 * This function undoes the effect of one call to acpi_register_gsi().

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t