Subject: Re: [PATCH] Fix buglets in mpc5200 FEC code that are corrupting memory.

From: Domen Puncer <[email-masked]>
Date: Fri, 9 Nov 2007 10:12:45 +0100

On 09/11/07 00:31 -0500, Jon Smirl wrote:
> This is the reason I couldn't get user space started or connect to my
> nfs server. Patch is against current linus git.
> 
> mpc5200 fec driver is corrupting memory. This patch fixes two bugs
> where the wrong skb buffer was being referenced.
> 
> Signed-off-by: Jon Smirl <[email-masked]>

Acked-by: Domen Puncer <[email-masked]>

I can't test it at the moment, but the patch is obviously correct,
mapped buffer should be the _same_ as submitted.

> 
> ---
> 
>  drivers/net/fec_mpc52xx.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/drivers/net/fec_mpc52xx.c b/drivers/net/fec_mpc52xx.c
> index a8a0ee2..ddfcc0b 100644
> --- a/drivers/net/fec_mpc52xx.c
> +++ b/drivers/net/fec_mpc52xx.c
> @@ -422,7 +422,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int
> irq, void *dev_id)
> 
>  		rskb = bcom_retrieve_buffer(priv->rx_dmatsk, &status,
>  				(struct bcom_bd **)&bd);
> -		dma_unmap_single(&dev->dev, bd->skb_pa, skb->len, DMA_FROM_DEVICE);
> +		dma_unmap_single(&dev->dev, bd->skb_pa, rskb->len, DMA_FROM_DEVICE);
> 
>  		/* Test for errors in received frame */
>  		if (status & BCOM_FEC_RX_BD_ERRORS) {
> @@ -467,7 +467,7 @@ static irqreturn_t mpc52xx_fec_rx_interrupt(int
> irq, void *dev_id)
>  			bcom_prepare_next_buffer(priv->rx_dmatsk);
> 
>  		bd->status = FEC_RX_BUFFER_SIZE;
> -		bd->skb_pa = dma_map_single(&dev->dev, rskb->data,
> +		bd->skb_pa = dma_map_single(&dev->dev, skb->data,
>  				FEC_RX_BUFFER_SIZE, DMA_FROM_DEVICE);
> 
>  		bcom_submit_next_buffer(priv->rx_dmatsk, skb);
> 
> 
> -- 
> Jon Smirl
> [email-masked]

-- 
Domen Puncer | Research & Development
.............................................................................................
Telargo d.o.o. | Zagrebška cesta 20 | 2000 Maribor | Slovenia
.............................................................................................
www.telargo.com