[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Thu, 07 Jul 2011 11:20:39 +0200
From: Eric Dumazet <eric.dumazet@...il.com>
To: Alexey Zaytsev <alexey.zaytsev@...il.com>
Cc: Michael Büsch <m@...s.ch>,
Neil Horman <nhorman@...driver.com>,
Andrew Morton <akpm@...ux-foundation.org>,
netdev@...r.kernel.org, Gary Zambrano <zambrano@...adcom.com>,
bugme-daemon@...zilla.kernel.org,
"David S. Miller" <davem@...emloft.net>,
Pekka Pietikainen <pp@...oulu.fi>,
Florian Schirmer <jolt@...box.org>,
Felix Fietkau <nbd@...nwrt.org>, Michael Buesch <mb@...sch.de>
Subject: Re: [Bugme-new] [Bug 38102] New: BUG kmalloc-2048: Poison
overwritten
Le jeudi 07 juillet 2011 à 11:45 +0400, Alexey Zaytsev a écrit :
> On Thu, Jul 7, 2011 at 10:48, Eric Dumazet <eric.dumazet@...il.com> wrote:
> > Le jeudi 07 juillet 2011 à 10:32 +0400, Alexey Zaytsev a écrit :
> >> Sorry, been busy for the last couple days. Any patches I should test?
> >
> > Please try :
> >
>
> Thanks. Seems to fail to initialize, getting this in dmesg:
>
> [ 103.421577] b44 0000:02:0e.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
> [ 103.440139] ssb: Core 0 found: Fast Ethernet (cc 0x806, rev 0x07,
> vendor 0x4243)
> [ 103.440159] ssb: Core 1 found: V90 (cc 0x807, rev 0x03, vendor 0x4243)
> [ 103.440177] ssb: Core 2 found: PCI (cc 0x804, rev 0x0A, vendor 0x4243)
> [ 103.481128] ssb: Sonics Silicon Backplane found on PCI device 0000:02:0e.0
> [ 103.481532] b44: b44.c:v2.0
> [ 103.502185] b44 ssb1:0: eth0: Broadcom 44xx/47xx 10/100BaseT
> Ethernet 00:17:a4:dd:4e:93
> [ 109.405071] b44 ssb1:0: eth0: powering down PHY
> [ 112.816456] b44 ssb1:0: eth0: Link is up at 100 Mbps, full duplex
> [ 112.816470] b44 ssb1:0: eth0: Flow control is off for TX and off for RX
> [ 112.952073] b44 ssb1:0: eth0: powering down PHY
> [ 113.816148] b44 ssb1:0: eth0: Link is down
> [ 114.953717] b44 ssb1:0: eth0: powering down PHY
> [ 117.816246] b44 ssb1:0: eth0: Link is up at 100 Mbps, full duplex
> [ 117.816260] b44 ssb1:0: eth0: Flow control is off for TX and off for RX
> [ 117.963238] b44 ssb1:0: eth0: powering down PHY
> [ 118.816128] b44 ssb1:0: eth0: Link is down
> [ 119.962817] b44 ssb1:0: eth0: powering down PHY
Maybe this is the b44_init_hw() change :
bw32(bp, B44_DMARX_PTR, 0);
So please change this part
Updated patch :
diff --git a/drivers/net/b44.c b/drivers/net/b44.c
index 6c4ef96..555a8ce 100644
--- a/drivers/net/b44.c
+++ b/drivers/net/b44.c
@@ -688,8 +688,8 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
ctrl |= DESC_CTRL_EOT;
dp = &bp->rx_ring[dest_idx];
- dp->ctrl = cpu_to_le32(ctrl);
dp->addr = cpu_to_le32((u32) mapping + bp->dma_offset);
+ dp->ctrl = cpu_to_le32(ctrl);
if (bp->flags & B44_FLAG_RX_RING_HACK)
b44_sync_dma_desc_for_device(bp->sdev, bp->rx_ring_dma,
@@ -725,13 +725,15 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)
DMA_BIDIRECTIONAL);
ctrl = src_desc->ctrl;
+ src_desc->ctrl = (ctrl & cpu_to_le32(DESC_CTRL_EOT));
if (dest_idx == (B44_RX_RING_SIZE - 1))
ctrl |= cpu_to_le32(DESC_CTRL_EOT);
else
ctrl &= cpu_to_le32(~DESC_CTRL_EOT);
- dest_desc->ctrl = ctrl;
dest_desc->addr = src_desc->addr;
+ dest_desc->ctrl = ctrl;
+ src_desc->addr = 0;
src_map->skb = NULL;
@@ -1118,6 +1120,7 @@ static void b44_init_rings(struct b44 *bp)
if (b44_alloc_rx_skb(bp, -1, i) < 0)
break;
}
+ bp->rx_prod = i;
}
/*
@@ -1406,7 +1409,6 @@ static void b44_init_hw(struct b44 *bp, int reset_kind)
bw32(bp, B44_DMARX_ADDR, bp->rx_ring_dma + bp->dma_offset);
bw32(bp, B44_DMARX_PTR, bp->rx_pending);
- bp->rx_prod = bp->rx_pending;
bw32(bp, B44_MIB_CTRL, MIB_CTRL_CLR_ON_READ);
}
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists