From 34f4f3341b7a318a3682305f1215347f0760f3b8 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 21 Mar 2006 10:57:01 -0800 Subject: [PATCH] --- yaml --- r: 22346 b: refs/heads/master c: c3da14474063e71686039d961d14785a9c2971ae h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/skge.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2588a94c8005..1abea7643b29 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: cfc3ed796eda2c41fb20986d831ed56c0474279d +refs/heads/master: c3da14474063e71686039d961d14785a9c2971ae diff --git a/trunk/drivers/net/skge.c b/trunk/drivers/net/skge.c index 4fc9333f0740..deca5066a447 100644 --- a/trunk/drivers/net/skge.c +++ b/trunk/drivers/net/skge.c @@ -727,7 +727,7 @@ static struct ethtool_ops skge_ethtool_ops = { * Allocate ring elements and chain them together * One-to-one association of board descriptors with ring elements */ -static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u64 base) +static int skge_ring_alloc(struct skge_ring *ring, void *vaddr, u32 base) { struct skge_tx_desc *d; struct skge_element *e; @@ -2168,6 +2168,14 @@ static int skge_up(struct net_device *dev) if (!skge->mem) return -ENOMEM; + BUG_ON(skge->dma & 7); + + if ((u64)skge->dma >> 32 != ((u64) skge->dma + skge->mem_size) >> 32) { + printk(KERN_ERR PFX "pci_alloc_consistent region crosses 4G boundary\n"); + err = -EINVAL; + goto free_pci_mem; + } + memset(skge->mem, 0, skge->mem_size); if ((err = skge_ring_alloc(&skge->rx_ring, skge->mem, skge->dma)))