intel-iommu-fault_reason_index_cleanup.patch
PATCH 1/1 intel-iommu-fault_reason_index_cleanup.patch
The following patch fixes an off by one bug in the fault reason string reporting function, and cleans up some of the code around this buglet.
please apply.
--mgross
Signed-off-by mark gross <[email protected]>
drivers/pci/intel-iommu.c +6 -7
@@ -745,7 +745,7 @@/* iommu interrupt handling. Most stuff are MSI-like. */ -static char *fault_reason_strings[] = +static const char *fault_reason_strings[] = {"Software" ,"Present bit in root entry is clear" ,
@@ -759,15 +759,14 @@"Context table ptr is invalid" ,"non-zero reserved fields in RTP" ,"non-zero reserved fields in CTP" , -"non-zero reserved fields in PTE" , - "Unknown" + "non-zero reserved fields in PTE" };#define MAX_FAULT_REASON_IDX (ARRAY_SIZE(fault_reason_strings) - 1) -char *dmar_get_fault_reason (u8 fault_reason) +const char *dmar_get_fault_reason (u8 fault_reason) { -if (fault_reason >=MAX_FAULT_REASON_IDX ) -return fault_reason_strings[MAX_FAULT_REASON_IDX -1 ]; +if (fault_reason >MAX_FAULT_REASON_IDX ) +return "Unknown" ;else return fault_reason_strings[fault_reason]; }
@@ -825,7 +824,7 @@static int iommu_page_fault_do_one (struct intel_iommu *iommu,int type,u8 fault_reason,u16 source_id,u64 addr) { -char *reason; +const char *reason; reason =dmar_get_fault_reason (fault_reason);
include/linux/dmar.h +1 -1
@@ -28,7 +28,7 @@#ifdef CONFIG_DMAR struct intel_iommu ; -extern char *dmar_get_fault_reason (u8 fault_reason); +extern const char *dmar_get_fault_reason (u8 fault_reason);/* Can't use the common MSI interrupt functions * since DMAR is not a pci device