| From 71cd0261743f3e652373733acadfdb11ad9003c8 Mon Sep 17 00:00:00 2001 |
| From: Arnd Bergmann <arnd@arndb.de> |
| Date: Fri, 12 Jul 2019 11:01:21 +0200 |
| Subject: ACPI: fix false-positive -Wuninitialized warning |
| |
| [ Upstream commit dfd6f9ad36368b8dbd5f5a2b2f0a4705ae69a323 ] |
| |
| 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. |
| |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| include/linux/acpi.h | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/include/linux/acpi.h b/include/linux/acpi.h |
| index ca2b4c4aec42c..719eb97217a3c 100644 |
| --- a/include/linux/acpi.h |
| +++ b/include/linux/acpi.h |
| @@ -309,7 +309,10 @@ void acpi_set_irq_model(enum acpi_irq_model_id model, |
| #ifdef CONFIG_X86_IO_APIC |
| extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity); |
| #else |
| -#define acpi_get_override_irq(gsi, trigger, polarity) (-1) |
| +static inline int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity) |
| +{ |
| + return -1; |
| +} |
| #endif |
| /* |
| * This function undoes the effect of one call to acpi_register_gsi(). |
| -- |
| 2.20.1 |
| |