txdr->buffer_info = vmalloc(size); 
 txdr->buffer_info = vmalloc_node(size, pcibus_to_node(pdev->bus)); 
e1000_setup_tx_resources(struct e1000_adapter *adapter,                         struct e1000_tx_ring *txdr){	struct pci_dev *pdev = adapter->pdev;	int size;	size = sizeof(struct e1000_buffer) * txdr->count;	txdr->buffer_info = vmalloc(size);	if(!txdr->buffer_info) {		DPRINTK(PROBE, ERR,		"Unable to allocate memory for the transmit descriptor ring\n");		return -ENOMEM;	}	memset(txdr->buffer_info, 0, size);	memset(&txdr->previous_buffer_info, 0, sizeof(struct e1000_buffer));	/* round up to nearest 4K */	txdr->size = txdr->count * sizeof(struct e1000_tx_desc);	E1000_ROUNDUP(txdr->size, 4096);	txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);	if(!txdr->desc) {setup_tx_desc_die:		vfree(txdr->buffer_info);		DPRINTK(PROBE, ERR,		"Unable to allocate memory for the transmit descriptor ring\n");		return -ENOMEM;	}	/* Fix for errata 23, can't cross 64kB boundary */	if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {		void *olddesc = txdr->desc;		dma_addr_t olddma = txdr->dma;		DPRINTK(TX_ERR, ERR, "txdr align check failed: %u bytes "				     "at %p\n", txdr->size, txdr->desc);		/* Try again, without freeing the previous */		txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);		if(!txdr->desc) {		/* Failed allocation, critical failure */			pci_free_consistent(pdev, txdr->size, olddesc, olddma);			goto setup_tx_desc_die;		}		if (!e1000_check_64k_bound(adapter, txdr->desc, txdr->size)) {			/* give up */			pci_free_consistent(pdev, txdr->size, txdr->desc,					    txdr->dma);			pci_free_consistent(pdev, txdr->size, olddesc, olddma);			DPRINTK(PROBE, ERR,				"Unable to allocate aligned memory "				"for the transmit descriptor ring\n");			vfree(txdr->buffer_info);			return -ENOMEM;		} else {			/* Free old allocation, new allocation was successful */			pci_free_consistent(pdev, txdr->size, olddesc, olddma);		}	}	memset(txdr->desc, 0, txdr->size);	txdr->next_to_use = 0;	txdr->next_to_clean = 0;	spin_lock_init(&txdr->tx_lock);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/a7ec15da65ab64c5f97beedc4ff21cf3e0ae71c0/e1000_main.c/clean/drivers/net/e1000/e1000_main.c