Bug Fix arch/ia64/kernel/pci-dma.c: fix recursive dma_supported() call in iommu_dma_supporte
PATCH 1/1 Bug Fix arch/ia64/kernel/pci-dma.c: fix recursive dma_supported() call in iommu_dma_supporte
In commit dfb805e831cc5306b14eacd64e0b36d0d973ee0d, dma_ops->dma_supported = iommu_dma_supported;
This dma_ops->dma_supported is first called in platform_dma_init() during kernel boot. Then dma_ops->dma_supported will be called recursively in iommu_dma_supported.
Kernel can not boot because kernel can not get out of iommu_dma_supported until it runs out of stack memory.
---
arch/ia64/kernel/pci-dma.c | 5 ----- 1 files changed, 5 deletions(-)
arch/ia64/kernel/pci-dma.c +0 -5
@@ -69,11 +69,6 @@ iommu_dma_init(void)int iommu_dma_supported (struct device *dev,u64 mask) { -struct dma_map_ops *ops =platform_dma_get_ops (dev); - -if (ops->dma_supported) -return ops->dma_supported (dev, mask); -/* Copied from i386. Doesn't make much sense, because it will only work for pci_alloc_coherent. The caller just has to use GFP_DMA in this case. */
Re: [PATCH] Bug Fix arch/ia64/kernel/pci-dma.c: fix recursive
Quoted 2 lines · On Tue, 4 Aug 2009 15:35:26 -0700 Fenghua Yu <[email protected]> wrote:
In commit
dfb805e831cc5306b14eacd64e0b36d0d973ee0d,dma_ops->dma_supported=iommu_dma_supported;
Hmm, the dfb805e831cc5306b14eacd64e0b36d0d973ee0d commit touches only dma_ops->mapping_error. It doesn't like like that this commit is related with the bug.
I guess that I added the bug when I rewrote IA64 dma operations.
Quoted 6 lines
This
dma_ops->dma_supportedis first called inplatform_dma_init()during kernel boot. Thendma_ops->dma_supportedwill be called recursively iniommu_dma_supported.Kernel can not boot because kernel can not get out of
iommu_dma_supporteduntil it runs out of stack memory.
The patch looks correct.
Thanks!
Quoted 28 lines
Signed-off-by Fenghua Yu <[email protected]>---
arch/ia64/kernel/pci-dma.c | 5 ----- 1 files changed, 5 deletions(-)arch/ia64/kernel/pci-dma.c +0
-6@@ -69,11 +69,6 @@ iommu_dma_init(void)int iommu_dma_supported (struct device *dev,u64 mask) { -struct dma_map_ops *ops =platform_dma_get_ops (dev); - -if (ops->dma_supported) -return ops->dma_supported (dev, mask); -/* Copied from i386. Doesn't make much sense, because it will only work for pci_alloc_coherent. The caller just has to use GFP_DMA in this case. */ --To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
RE: [PATCH] Bug Fix arch/ia64/kernel/pci-dma.c: fix recursive
In reply to Fenghua YuQuoted 4 lines
On Tue, 4 Aug 2009 15:35:26 -0700
Fenghua Yu <[email protected]> wrote:
Quoted 8 lines
Quoted 2 lines
In commit
dfb805e831cc5306b14eacd64e0b36d0d973ee0d,dma_ops->dma_supported=iommu_dma_supported;Hmm, the
dfb805e831cc5306b14eacd64e0b36d0d973ee0dcommit touches onlydma_ops->mapping_error. It doesn't like like that this commit is related with the bug.I guess that I added the bug when I rewrote IA64 dma operations.
My bad. The commit I refer to should be 160c1d8e40866edfeae7d68816b7005d70acf391 which added the statement:dma_ops->dma_supported = iommu_dma_supported;
I will change to this commit# in comment when push the patch to upstream.
Thanks.
-Fenghua