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]>
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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]