Messages in this thread Patch in this message | | | Date | Tue, 20 Nov 2007 10:22:20 -0800 | From | mark gross <> | Subject | [PATCH] 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 <mgross@linux.intel.com>
Index: linux-2.6.23-rc2-iommu/drivers/pci/intel-iommu.c =================================================================== --- linux-2.6.23-rc2-iommu.orig/drivers/pci/intel-iommu.c 2007-11-20 10:04:39.000000000 -0800 +++ linux-2.6.23-rc2-iommu/drivers/pci/intel-iommu.c 2007-11-20 10:10:48.000000000 -0800 @@ -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); Index: linux-2.6.23-rc2-iommu/include/linux/dmar.h =================================================================== --- linux-2.6.23-rc2-iommu.orig/include/linux/dmar.h 2007-11-20 10:12:06.000000000 -0800 +++ linux-2.6.23-rc2-iommu/include/linux/dmar.h 2007-11-20 10:13:43.000000000 -0800 @@ -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 - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |