BUG: Wrong dma queue handling in ixp4 driver

From: Lino Sanfilippo
Date: Tue Jul 19 2016 - 07:06:24 EST



Hi,

maybe I miss something, but the ixp4 ethernet driver seems to handle dma pools
in a wrong way: In init_queues() it creates a dma pool for descriptors and then
only allocates a single descriptor from this pool. The author seems to assume the whole
table has been allocated already, since after that the complete pool size is zeroed:

<snip>
static int init_queues(struct port *port)
{
int i;

if (!ports_open) {
dma_pool = dma_pool_create(DRV_NAME, &port->netdev->dev,
POOL_ALLOC_SIZE, 32, 0);
if (!dma_pool)
return -ENOMEM;
}

if (!(port->desc_tab = dma_pool_alloc(dma_pool, GFP_KERNEL,
&port->desc_tab_phys)))
return -ENOMEM;
memset(port->desc_tab, 0, POOL_ALLOC_SIZE);
<snap>

Regards,
Lino