From: Kevin Hao <kexin.hao@windriver.com>
To: linux-kernel@vger.kernel.org
Cc: jeffrey.t.kirsher@intel.com, jesse.brandeburg@intel.com,
bruce.w.allan@intel.com, john.ronciak@intel.com,
dacker@roinet.com, e1000-devel@lists.sourceforge.net,
linux-arm-kernel@lists.arm.linux.org.uk,
linux-net@vger.kernel.org
Subject: [PATCH] e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx
Date: Sat, 21 Jun 2008 18:20:35 +0800 [thread overview]
Message-ID: <1214043635.12484.8.camel@hkx> (raw)
Hi,
The E100 device can't work on current kernel (2.6.26-rc6) and will cause
kernel corruption on intel ixdp4xx. This patch fix this regression.
---
commit c1f24812b9de182a4272724a2e84ea1ae5dd4659
Author: Kevin Hao <kexin.hao@windriver.com>
Date: Sat Jun 21 16:50:50 2008 +0800
e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx
Do a DMA sync after we've allocated a new skb and link it with the previous
RFD. Otherwise the previous RFD may reference the previously freed skb
and cause kernel corruption.
Previously there was such a DMA sync at this place, but it was removed
by commit 7734f6e6bcd7ba78b00e93e74a4ddafd9886cdea.
Restoring this sync operation eliminates the regression.
Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index f3cba5e..1037b13 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -1803,6 +1803,8 @@ static int e100_rx_alloc_skb(struct nic *nic, struct rx *rx)
if (rx->prev->skb) {
struct rfd *prev_rfd = (struct rfd *)rx->prev->skb->data;
put_unaligned_le32(rx->dma_addr, &prev_rfd->link);
+ pci_dma_sync_single_for_device(nic->pdev, rx->prev->dma_addr,
+ sizeof(struct rfd), PCI_DMA_TODEVICE);
}
return 0;
---
Best Regards,
Kevin
next reply other threads:[~2008-06-21 10:21 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-21 10:20 Kevin Hao [this message]
2008-06-22 1:51 ` [PATCH] e100: Do pci_dma_sync after skb_alloc for proper operation on ixp4xx David Acker
2008-06-27 5:32 ` Jeff Garzik
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1214043635.12484.8.camel@hkx \
--to=kexin.hao@windriver.com \
--cc=bruce.w.allan@intel.com \
--cc=dacker@roinet.com \
--cc=e1000-devel@lists.sourceforge.net \
--cc=jeffrey.t.kirsher@intel.com \
--cc=jesse.brandeburg@intel.com \
--cc=john.ronciak@intel.com \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-net@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.