Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dmfe: check pci_alloc_consistent errors

We need to check the address that pci_alloc_consistent() returns since
it might fail.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

authored by

FUJITA Tomonori and committed by
Jeff Garzik
74d5e8ac 2d488c2f

+11 -1
+11 -1
drivers/net/tulip/dmfe.c
··· 420 420 /* Allocate Tx/Rx descriptor memory */ 421 421 db->desc_pool_ptr = pci_alloc_consistent(pdev, sizeof(struct tx_desc) * 422 422 DESC_ALL_CNT + 0x20, &db->desc_pool_dma_ptr); 423 + if (!db->desc_pool_ptr) 424 + goto err_out_res; 423 425 424 426 db->buf_pool_ptr = pci_alloc_consistent(pdev, TX_BUF_ALLOC * 425 427 TX_DESC_CNT + 4, &db->buf_pool_dma_ptr); 428 + if (!db->buf_pool_ptr) 429 + goto err_out_free_desc; 426 430 427 431 db->first_tx_desc = (struct tx_desc *) db->desc_pool_ptr; 428 432 db->first_tx_desc_dma = db->desc_pool_dma_ptr; ··· 473 469 474 470 err = register_netdev (dev); 475 471 if (err) 476 - goto err_out_res; 472 + goto err_out_free_buf; 477 473 478 474 printk(KERN_INFO "%s: Davicom DM%04lx at pci%s, " 479 475 "%s, irq %d.\n", ··· 487 483 488 484 return 0; 489 485 486 + err_out_free_buf: 487 + pci_free_consistent(pdev, TX_BUF_ALLOC * TX_DESC_CNT + 4, 488 + db->buf_pool_ptr, db->buf_pool_dma_ptr); 489 + err_out_free_desc: 490 + pci_free_consistent(pdev, sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, 491 + db->desc_pool_ptr, db->desc_pool_dma_ptr); 490 492 err_out_res: 491 493 pci_release_regions(pdev); 492 494 err_out_disable: