patch-2.4.0-test12 linux/drivers/net/dmfe.c

Next file: linux/drivers/net/dummy.c
Previous file: linux/drivers/net/dgrs.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test11/linux/drivers/net/dmfe.c linux/drivers/net/dmfe.c
@@ -393,6 +393,7 @@
 	dev = init_etherdev(NULL, sizeof(*db));
 	if (dev == NULL)
 		goto err_out;
+	SET_MODULE_OWNER(dev);
 
 	/* IO range check */
 	if (!request_region(pci_iobase, CHK_IO_SIZE(pdev, dev_rev), dev->name)) {
@@ -461,12 +462,14 @@
  
 static int dmfe_open(struct net_device *dev)
 {
+	int ret;
 	struct dmfe_board_info *db = dev->priv;
 
 	DMFE_DBUG(0, "dmfe_open", 0);
 
-	if (request_irq(dev->irq, &dmfe_interrupt, SA_SHIRQ, dev->name, dev))
-		return -EAGAIN;
+	ret = request_irq(dev->irq, &dmfe_interrupt, SA_SHIRQ, dev->name, dev);
+	if (ret)
+		return ret;
 
 	/* Allocated Tx/Rx descriptor memory */
 	db->desc_pool_ptr = kmalloc(sizeof(struct tx_desc) * DESC_ALL_CNT + 0x20, GFP_KERNEL | GFP_DMA);
@@ -511,9 +514,6 @@
 	/* Initilize DM910X board */
 	dmfe_init_dm910x(dev);
 
-	/* Active System Interface */
-	MOD_INC_USE_COUNT;
-
 	/* set and active a timer process */
 	init_timer(&db->timer);
 	db->timer.expires = DMFE_TIMER_WUT;
@@ -657,7 +657,7 @@
 	DELAY_5US;
 
 	/* deleted timer */
-	del_timer(&db->timer);
+	del_timer_sync(&db->timer);
 
 	/* free interrupt */
 	free_irq(dev->irq, dev);
@@ -668,8 +668,6 @@
 	/* free all descriptor memory and buffer memory */
 	kfree(db->desc_pool_ptr);
 	kfree(db->buf_pool_ptr);
-
-	MOD_DEC_USE_COUNT;
 
 	return 0;
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)