[PATCH] bcm43xx: Fix crash on ifdown, by being careful in pio/dma freeing.
This bug was caused by the packing of the bcm43xx_dma and bcm43xx_pio structures into a union. Signed-off-by: Michael Buesch <mbuesch@freenet.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
e9357c056c
commit
49f29efa7f
|
@ -531,7 +531,11 @@ static void bcm43xx_destroy_dmaring(struct bcm43xx_dmaring *ring)
|
|||
|
||||
void bcm43xx_dma_free(struct bcm43xx_private *bcm)
|
||||
{
|
||||
struct bcm43xx_dma *dma = bcm43xx_current_dma(bcm);
|
||||
struct bcm43xx_dma *dma;
|
||||
|
||||
if (bcm43xx_using_pio(bcm))
|
||||
return;
|
||||
dma = bcm43xx_current_dma(bcm);
|
||||
|
||||
bcm43xx_destroy_dmaring(dma->rx_ring1);
|
||||
dma->rx_ring1 = NULL;
|
||||
|
|
|
@ -377,7 +377,11 @@ static void bcm43xx_destroy_pioqueue(struct bcm43xx_pioqueue *queue)
|
|||
|
||||
void bcm43xx_pio_free(struct bcm43xx_private *bcm)
|
||||
{
|
||||
struct bcm43xx_pio *pio = bcm43xx_current_pio(bcm);
|
||||
struct bcm43xx_pio *pio;
|
||||
|
||||
if (!bcm43xx_using_pio(bcm))
|
||||
return;
|
||||
pio = bcm43xx_current_pio(bcm);
|
||||
|
||||
bcm43xx_destroy_pioqueue(pio->queue3);
|
||||
pio->queue3 = NULL;
|
||||
|
|
Loading…
Reference in a new issue