pcnet32_purge_tx_ring(dev);
 
-       new_tx_ring = pci_alloc_consistent(lp->pci_dev,
-                                          sizeof(struct pcnet32_tx_head) *
-                                          (1 << size),
-                                          &new_ring_dma_addr);
+       new_tx_ring = pci_zalloc_consistent(lp->pci_dev,
+                                           sizeof(struct pcnet32_tx_head) *
+                                           (1 << size),
+                                           &new_ring_dma_addr);
        if (new_tx_ring == NULL) {
                netif_err(lp, drv, dev, "Consistent memory allocation failed\n");
                return;
        }
-       memset(new_tx_ring, 0, sizeof(struct pcnet32_tx_head) * (1 << size));
 
        new_dma_addr_list = kcalloc(1 << size, sizeof(dma_addr_t),
                                    GFP_ATOMIC);
        int new, overlap;
        unsigned int entries = 1 << size;
 
-       new_rx_ring = pci_alloc_consistent(lp->pci_dev,
-                                          sizeof(struct pcnet32_rx_head) *
-                                          entries,
-                                          &new_ring_dma_addr);
+       new_rx_ring = pci_zalloc_consistent(lp->pci_dev,
+                                           sizeof(struct pcnet32_rx_head) *
+                                           entries,
+                                           &new_ring_dma_addr);
        if (new_rx_ring == NULL) {
                netif_err(lp, drv, dev, "Consistent memory allocation failed\n");
                return;
        }
-       memset(new_rx_ring, 0, sizeof(struct pcnet32_rx_head) * entries);
 
        new_dma_addr_list = kcalloc(entries, sizeof(dma_addr_t), GFP_ATOMIC);
        if (!new_dma_addr_list)