if (priv->cmdlog) { kfree(priv->cmdlog); priv->cmdlog = NULL; } 
static void ipw_pci_remove(struct pci_dev *pdev){	struct ipw_priv *priv = pci_get_drvdata(pdev);	struct list_head *p, *q;	int i;	if (!priv)		return;	down(&priv->sem);	priv->status |= STATUS_EXIT_PENDING;	ipw_down(priv);	sysfs_remove_group(&pdev->dev.kobj, &ipw_attribute_group);	up(&priv->sem);	unregister_netdev(priv->net_dev);	if (priv->rxq) {		ipw_rx_queue_free(priv, priv->rxq);		priv->rxq = NULL;	}	ipw_tx_queue_free(priv);	/* ipw_down will ensure that there is no more pending work	 * in the workqueue's, so we can safely remove them now. */	cancel_delayed_work(&priv->adhoc_check);	cancel_delayed_work(&priv->gather_stats);	cancel_delayed_work(&priv->request_scan);	cancel_delayed_work(&priv->rf_kill);	cancel_delayed_work(&priv->scan_check);	destroy_workqueue(priv->workqueue);	priv->workqueue = NULL;	/* Free MAC hash list for ADHOC */	for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++) {		list_for_each_safe(p, q, &priv->ibss_mac_hash[i]) {			kfree(list_entry(p, struct ipw_ibss_seq, list));			list_del(p);		}	}	if (priv->error) {		ipw_free_error_log(priv->error);		priv->error = NULL;	}	free_irq(pdev->irq, priv);	iounmap(priv->hw_base);	pci_release_regions(pdev);	pci_disable_device(pdev);	pci_set_drvdata(pdev, NULL);	free_ieee80211(priv->net_dev);	free_firmware();}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f6c5cb7c6f8a85045996bfc3442af963d6578d60/ipw2200.c/buggy/drivers/net/wireless/ipw2200.c