 ipw_down(priv); 
up(&priv->sem); 
static void ipw_pci_remove(struct pci_dev *pdev){	struct ipw_priv *priv = pci_get_drvdata(pdev);	if (!priv)		return;	priv->status |= STATUS_EXIT_PENDING;	sysfs_remove_group(&pdev->dev.kobj, &ipw_attribute_group);	ipw_down(priv);	unregister_netdev(priv->net_dev);	if (priv->rxq) {		ipw_rx_queue_free(priv, priv->rxq);		priv->rxq = NULL;	}	ipw_tx_queue_free(priv);	ipw_led_shutdown(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_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);#ifdef CONFIG_PM	if (fw_loaded) {		release_firmware(bootfw);		release_firmware(ucode);		release_firmware(firmware);		fw_loaded = 0;	}#endif}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b095c3819805f87d73d41641a53e4c070360d783/ipw2200.c/buggy/drivers/net/wireless/ipw2200.c