svn commit: r347645 - head/sys/x86/iommu
Ryan Libby
rlibby at FreeBSD.org
Thu May 16 04:24:10 UTC 2019
Author: rlibby
Date: Thu May 16 04:24:08 2019
New Revision: 347645
URL: https://svnweb.freebsd.org/changeset/base/347645
Log:
iommu static analysis cleanup
A static analyzer complained about a couple instances of checking a
variable against NULL after already having dereferenced it.
- dmar_gas_alloc_region: remove the tautological NULL checks
- dmar_release_resources / dmar_fini_fault_log: don't deref unit->regs
unless initialized.
And while here, fix an inverted initialization check in dmar_fini_qi.
Reviewed by: kib
Sponsored by: Dell EMC Isilon
Differential revision: https://reviews.freebsd.org/D20263
Modified:
head/sys/x86/iommu/intel_fault.c
head/sys/x86/iommu/intel_gas.c
head/sys/x86/iommu/intel_qi.c
Modified: head/sys/x86/iommu/intel_fault.c
==============================================================================
--- head/sys/x86/iommu/intel_fault.c Thu May 16 03:30:36 2019 (r347644)
+++ head/sys/x86/iommu/intel_fault.c Thu May 16 04:24:08 2019 (r347645)
@@ -291,12 +291,12 @@ void
dmar_fini_fault_log(struct dmar_unit *unit)
{
+ if (unit->fault_taskqueue == NULL)
+ return;
+
DMAR_LOCK(unit);
dmar_disable_fault_intr(unit);
DMAR_UNLOCK(unit);
-
- if (unit->fault_taskqueue == NULL)
- return;
taskqueue_drain(unit->fault_taskqueue, &unit->fault_task);
taskqueue_free(unit->fault_taskqueue);
Modified: head/sys/x86/iommu/intel_gas.c
==============================================================================
--- head/sys/x86/iommu/intel_gas.c Thu May 16 03:30:36 2019 (r347644)
+++ head/sys/x86/iommu/intel_gas.c Thu May 16 04:24:08 2019 (r347645)
@@ -546,7 +546,7 @@ dmar_gas_alloc_region(struct dmar_domain *domain, stru
return (EBUSY);
entry->start = prev->end;
}
- if (next != NULL && next->start < entry->end &&
+ if (next->start < entry->end &&
(next->flags & DMAR_MAP_ENTRY_PLACE) == 0) {
if ((next->flags & DMAR_MAP_ENTRY_RMRR) == 0)
return (EBUSY);
@@ -560,7 +560,7 @@ dmar_gas_alloc_region(struct dmar_domain *domain, stru
dmar_gas_rb_remove(domain, prev);
prev = NULL;
}
- if (next != NULL && next->start < entry->end) {
+ if (next->start < entry->end) {
dmar_gas_rb_remove(domain, next);
next = NULL;
}
Modified: head/sys/x86/iommu/intel_qi.c
==============================================================================
--- head/sys/x86/iommu/intel_qi.c Thu May 16 03:30:36 2019 (r347644)
+++ head/sys/x86/iommu/intel_qi.c Thu May 16 04:24:08 2019 (r347645)
@@ -425,7 +425,7 @@ dmar_fini_qi(struct dmar_unit *unit)
{
struct dmar_qi_genseq gseq;
- if (unit->qi_enabled)
+ if (!unit->qi_enabled)
return;
taskqueue_drain(unit->qi_taskqueue, &unit->qi_task);
taskqueue_free(unit->qi_taskqueue);
More information about the svn-src-head
mailing list