View | Details | Raw Unified | Return to bug 137960
Collapse All | Expand All

(-)linux-2.6-mv643xx_enet/drivers/net/mv643xx_eth.c (-15 / +4 lines)
Lines 655-688 static int mv643xx_eth_open(struct net_d Link Here
655
	unsigned int port_num = mp->port_num;
655
	unsigned int port_num = mp->port_num;
656
	int err;
656
	int err;
657
657
658
	spin_lock_irq(&mp->lock);
659
660
	err = request_irq(dev->irq, mv643xx_eth_int_handler,
658
	err = request_irq(dev->irq, mv643xx_eth_int_handler,
661
			SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev);
659
			SA_SHIRQ | SA_SAMPLE_RANDOM, dev->name, dev);
662
663
	if (err) {
660
	if (err) {
664
		printk(KERN_ERR "Can not assign IRQ number to MV643XX_eth%d\n",
661
		printk(KERN_ERR "Can not assign IRQ number to MV643XX_eth%d\n",
665
								port_num);
662
								port_num);
666
		err = -EAGAIN;
663
		return -EAGAIN;
667
		goto out;
668
	}
664
	}
669
665
666
	spin_lock_irq(&mp->lock);
667
670
	if (mv643xx_eth_real_open(dev)) {
668
	if (mv643xx_eth_real_open(dev)) {
671
		printk("%s: Error opening interface\n", dev->name);
669
		printk("%s: Error opening interface\n", dev->name);
670
		free_irq(dev->irq, dev);
672
		err = -EBUSY;
671
		err = -EBUSY;
673
		goto out_free;
674
	}
672
	}
675
673
676
	spin_unlock_irq(&mp->lock);
674
	spin_unlock_irq(&mp->lock);
677
675
678
	return 0;
679
680
out_free:
681
	free_irq(dev->irq, dev);
682
683
out:
684
	spin_unlock_irq(&mp->lock);
685
686
	return err;
676
	return err;
687
}
677
}
688
678
689

Return to bug 137960