* [PATCH] x86/ioapic: io_apic fix null dereference check
@ 2023-12-04 18:02 Prarit Bhargava
0 siblings, 0 replies; only message in thread
From: Prarit Bhargava @ 2023-12-04 18:02 UTC (permalink / raw)
To: linux-kernel
Cc: Prarit Bhargava, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, x86, H. Peter Anvin, Peter Zijlstra (Intel),
Wei Liu, Saurabh Sengar, Johan Hovold, Michael Kelley,
David Malcolm, David Arcari, Don Zickus
The gcc plugin -fanalyzer [1] tries to detect various
patterns of incorrect behaviour. The tool reports
arch/x86/kernel/apic/io_apic.c: In function ‘ioapic_destroy_irqdomain’:
arch/x86/kernel/apic/io_apic.c:2390:12: warning: check of ‘ioapics[idx].irqdomain’ for NULL after already dereferencing it [-Wanalyzer-deref-before-check]
|
| 2388 | struct fwnode_handle *fn = ioapics[idx].irqdomain->fwnode;
| | ^~
| | |
| | (1) pointer ‘ioapics[idx].irqdomain’ is dereferenced here
| 2389 |
| 2390 | if (ioapics[idx].irqdomain) {
| | ~
| | |
| | (2) pointer ‘ioapics[idx].irqdomain’ is checked for NULL here but it was already dereferenced at (1)
|
Fix the null dereference check in ioapic_destroy_irqdomain().
[1] https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Static-Analyzer-Options.html
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Ingo Molnar <mingo@redhat.com>
CC: Borislav Petkov <bp@alien8.de>
CC: Dave Hansen <dave.hansen@linux.intel.com>
CC: x86@kernel.org
CC: "H. Peter Anvin" <hpa@zytor.com>
CC: "Peter Zijlstra (Intel)" <peterz@infradead.org>
CC: Wei Liu <wei.liu@kernel.org>
CC: Prarit Bhargava <prarit@redhat.com>
CC: Saurabh Sengar <ssengar@linux.microsoft.com>
CC: Johan Hovold <johan+linaro@kernel.org>
CC: Michael Kelley <mikelley@microsoft.com>
CC: David Malcolm <dmalcolm@redhat.com>
CC: David Arcari <darcari@redhat.com>
CC: Don Zickus <dzickus@redhat.com>
Signed-off-by: Prarit Bhargava <prarit@redhat.com>
---
arch/x86/kernel/apic/io_apic.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index 00da6cf6b07d..f6f19eee0339 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2381,14 +2381,14 @@ static int mp_irqdomain_create(int ioapic)
static void ioapic_destroy_irqdomain(int idx)
{
struct ioapic_domain_cfg *cfg = &ioapics[idx].irqdomain_cfg;
- struct fwnode_handle *fn = ioapics[idx].irqdomain->fwnode;
- if (ioapics[idx].irqdomain) {
- irq_domain_remove(ioapics[idx].irqdomain);
- if (!cfg->dev)
- irq_domain_free_fwnode(fn);
- ioapics[idx].irqdomain = NULL;
- }
+ if (!ioapics[idx].irqdomain)
+ return;
+
+ irq_domain_remove(ioapics[idx].irqdomain);
+ if (!cfg->dev)
+ irq_domain_free_fwnode(ioapics[idx].irqdomain->fwnode);
+ ioapics[idx].irqdomain = NULL;
}
void __init setup_IO_APIC(void)
--
2.43.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2023-12-04 18:02 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-04 18:02 [PATCH] x86/ioapic: io_apic fix null dereference check Prarit Bhargava
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®