Skip to contentSkip to conversation

net: sxgbe: add basic framework for Samsung 10Gb ethernet driver

DISCUSSION Dan Carpenter 1 participant 3 messages Oct 15, 2014 – Jan 5, 2015 Kernel janitors

lore
Share & tools
lore
#0 lore raw

Hello Siva Reddy,

The patch 1edb9ca69e8a: "net: sxgbe: add basic framework for Samsung 10Gb ethernet driver" from Mar 25, 2014, leads to the following static checker warning:

	drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c:505 init_rx_ring()
	warning: passing freed memory 'rx_ring->rx_skbuff'

drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
500 return 0;
501
502 err_init_rx_buffers:
503 while (--desc_index >= 0)

   504                  free_rx_ring(priv->device, rx_ring, desc_index);
                                                   ^^^^^^^

We free "rx_ring->rx_skbuff" and "rx_ring->rx_skbuff_dma" here so the next two kfree() calls are double frees.

   505          kfree(rx_ring->rx_skbuff);
   506  rxbuff_err:
   507          kfree(rx_ring->rx_skbuff_dma);
   508  dmamem_err:
   509          dma_free_coherent(priv->device,
   510                            rx_rsize * sizeof(struct sxgbe_rx_norm_desc),
   511                            rx_ring->dma_rx, rx_ring->dma_rx_phy);
   512  error:
   513          return -ENOMEM;
   514  }

regards,
dan carpenter

#1 lore raw

Silva's email bounces.

Quoted 32 lines · Dan Carpenter

Hello Siva Reddy,

The patch 1edb9ca69e8a: "net: sxgbe: add basic framework for Samsung 10Gb ethernet driver" from Mar 25, 2014, leads to the following static checker warning:

	drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c:505 init_rx_ring()
	warning: passing freed memory 'rx_ring->rx_skbuff'

drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c

   500          return 0;
   501  
   502  err_init_rx_buffers:
   503          while (--desc_index >= 0)
   504                  free_rx_ring(priv->device, rx_ring, desc_index);
                                                   ^^^^^^^

We free "rx_ring->rx_skbuff" and "rx_ring->rx_skbuff_dma" here so the next two kfree() calls are double frees.

   505          kfree(rx_ring->rx_skbuff);
   506  rxbuff_err:
   507          kfree(rx_ring->rx_skbuff_dma);
   508  dmamem_err:
   509          dma_free_coherent(priv->device,
   510                            rx_rsize * sizeof(struct sxgbe_rx_norm_desc),
   511                            rx_ring->dma_rx, rx_ring->dma_rx_phy);
   512  error:
   513          return -ENOMEM;
   514  }

regards,
dan carpenter

#2 lore raw
In reply to Dan Carpenter

Whatever happened with this? Who is maintaining this now that Silva isn't around?

regards,
dan carpenter

Quoted 35 lines · Dan Carpenter

Silva's email bounces.

Quoted 32 lines · Dan Carpenter

Hello Siva Reddy,

The patch 1edb9ca69e8a: "net: sxgbe: add basic framework for Samsung 10Gb ethernet driver" from Mar 25, 2014, leads to the following static checker warning:

	drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c:505 init_rx_ring()
	warning: passing freed memory 'rx_ring->rx_skbuff'

drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c

   500          return 0;
   501  
   502  err_init_rx_buffers:
   503          while (--desc_index >= 0)
   504                  free_rx_ring(priv->device, rx_ring, desc_index);
                                                   ^^^^^^^

We free "rx_ring->rx_skbuff" and "rx_ring->rx_skbuff_dma" here so the next two kfree() calls are double frees.

   505          kfree(rx_ring->rx_skbuff);
   506  rxbuff_err:
   507          kfree(rx_ring->rx_skbuff_dma);
   508  dmamem_err:
   509          dma_free_coherent(priv->device,
   510                            rx_rsize * sizeof(struct sxgbe_rx_norm_desc),
   511                            rx_ring->dma_rx, rx_ring->dma_rx_phy);
   512  error:
   513          return -ENOMEM;
   514  }

regards,
dan carpenter