patch-2.4.0-test9 linux/drivers/net/eql.c

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

diff -u --recursive --new-file v2.4.0-test8/linux/drivers/net/eql.c linux/drivers/net/eql.c
@@ -113,32 +113,18 @@
  */
 
 #include <linux/module.h>
-
 #include <linux/kernel.h>
-#include <linux/sched.h>
-#include <linux/types.h>
-#include <linux/fcntl.h>
-#include <linux/interrupt.h>
-#include <linux/ptrace.h>
-#include <linux/ioport.h>
-#include <linux/in.h>
-#include <linux/malloc.h>
-#include <linux/string.h>
-#include <asm/system.h>
-#include <asm/bitops.h>
-#include <asm/io.h>
-#include <asm/dma.h>
-#include <asm/uaccess.h>
-#include <linux/errno.h>              
 #include <linux/init.h>
-
+#include <linux/timer.h>
 #include <linux/netdevice.h>
+
 #include <linux/if.h>
 #include <linux/if_arp.h>
-#include <linux/timer.h>
-
 #include <linux/if_eql.h>
 
+#include <asm/uaccess.h>
+
+
 #ifndef EQL_DEBUG
 /* #undef EQL_DEBUG      -* print nothing at all, not even a boot-banner */
 /* #define EQL_DEBUG 1   -* print only the boot-banner */
@@ -150,7 +136,7 @@
 #endif
 static unsigned int eql_debug = EQL_DEBUG;
 
-int        eql_init(struct net_device *dev); /*  */
+static int eql_init(struct net_device *dev); /*  */
 static int eql_open(struct net_device *dev); /*  */
 static int eql_close(struct net_device *dev); /*  */
 static int eql_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); /*  */
@@ -209,7 +195,7 @@
    ---------------------------------------------------------
    */
 
-int __init eql_init(struct net_device *dev)
+static int __init eql_init(struct net_device *dev)
 {
 	static unsigned version_printed = 0;
 	/* static unsigned num_masters     = 0; */
@@ -273,6 +259,8 @@
 	equalizer_t *eql = (equalizer_t *) dev->priv;
 	slave_queue_t *new_queue;
 
+	MOD_INC_USE_COUNT;
+
 #ifdef EQL_DEBUG
 	if (eql_debug >= 5)
 		printk ("%s: open\n", dev->name);
@@ -294,10 +282,10 @@
 		eql->timer_on = 1;
 		add_timer (&eql->timer);
 
-		MOD_INC_USE_COUNT;
 		return 0;
 	}
-	return 1;
+	MOD_DEC_USE_COUNT;
+	return -ENOMEM;
 }
 
 
@@ -409,16 +397,14 @@
 	struct net_device *master_dev;
 	struct net_device *slave_dev;
 	slaving_request_t srq;
-	int err;
 
-	err = copy_from_user(&srq, srqp, sizeof (slaving_request_t));
-	if (err)  
+	if (copy_from_user(&srq, srqp, sizeof (slaving_request_t)))
 	  {
 #ifdef EQL_DEBUG
 	if (eql_debug >= 20)
 		printk ("EQL enslave: error detected by copy_from_user\n");
 #endif  
-		return err;
+		return -EFAULT;
 	  }
 
 #ifdef EQL_DEBUG
@@ -470,11 +456,9 @@
 	struct net_device *master_dev;
 	struct net_device *slave_dev;
 	slaving_request_t srq;
-	int err;
 
-	err = copy_from_user(&srq, srqp, sizeof (slaving_request_t));
-	if (err) 
-		return err;
+	if (copy_from_user(&srq, srqp, sizeof (slaving_request_t)))
+		return -EFAULT;
 
 #ifdef EQL_DEBUG
 	if (eql_debug >= 20)
@@ -500,11 +484,9 @@
 	equalizer_t *eql;
 	struct net_device *slave_dev;
 	slave_config_t sc;
-	int err;
 
-	err = copy_from_user (&sc, scp, sizeof (slave_config_t));
-	if (err) 
-		return err;
+	if (copy_from_user (&sc, scp, sizeof (slave_config_t)))
+		return -EFAULT;
 
 #ifdef EQL_DEBUG
 	if (eql_debug >= 20)
@@ -519,10 +501,8 @@
 		if (slave != 0)
 		{
 			sc.priority = slave->priority;
-			err = verify_area(VERIFY_WRITE, (void *)scp, sizeof (slave_config_t));
-			if (err) 
-				return err;
-			copy_to_user (scp, &sc, sizeof (slave_config_t));
+			if (copy_to_user (scp, &sc, sizeof (slave_config_t)))
+				return -EFAULT;
 			return 0;
 		}
 	}
@@ -536,11 +516,9 @@
 	equalizer_t *eql;
 	struct net_device *slave_dev;
 	slave_config_t sc;
-	int err;
 
-	err = copy_from_user (&sc, scp, sizeof (slave_config_t));
-	if (err) 
-		return err;
+	if (copy_from_user (&sc, scp, sizeof (slave_config_t)))
+		return -EFAULT;
 
 #ifdef EQL_DEBUG
 	if (eql_debug >= 20)
@@ -578,13 +556,11 @@
 
 	if ( eql_is_master (dev) )
 	{
-		int err;
 		eql = (equalizer_t *) dev->priv;
 		mc.max_slaves = eql->max_slaves;
 		mc.min_slaves = eql->min_slaves;
-		err = copy_to_user (mcp, &mc, sizeof (master_config_t));
-		if (err) 
-			return err;
+		if (copy_to_user (mcp, &mc, sizeof (master_config_t)))
+			return -EFAULT;
 		return 0;
 	}
 	return -EINVAL;
@@ -595,11 +571,9 @@
 {
 	equalizer_t *eql;
 	master_config_t mc;
-	int err;
 
-	err = copy_from_user (&mc, mcp, sizeof (master_config_t));
-	if (err)
-		return err;
+	if (copy_from_user (&mc, mcp, sizeof (master_config_t)))
+		return -EFAULT;
 #if EQL_DEBUG
 	if (eql_debug >= 20)
 		printk ("%s: set master config\n", dev->name);
@@ -646,11 +620,8 @@
 
 	slave = (slave_t *) kmalloc (sizeof (slave_t), GFP_KERNEL);
 	if (slave)
-	{
 		memset(slave, 0, sizeof (slave_t));
-		return slave;
-	}
-	return 0;
+	return slave;
 }
 
 
@@ -702,31 +673,32 @@
 	slave_t *tail_slave;
 
 	queue = (slave_queue_t *) kmalloc (sizeof (slave_queue_t), GFP_KERNEL);
-	if (queue == NULL)
-		return 0;
-	memset (queue, 0, sizeof (slave_queue_t));
+	if (!queue)
+		goto err_out;
+
 	head_slave = eql_new_slave ();
+	if (!head_slave)
+		goto err_out_queue;
+
 	tail_slave = eql_new_slave ();
+	if (!tail_slave)
+		goto err_out_hs;
 
-	if ( head_slave != 0 &&
-		tail_slave != 0 )
-	{
-		head_slave->next = tail_slave;
-		tail_slave->next = 0;
-		queue->head = head_slave;
-		queue->num_slaves = 0;
-		queue->master_dev = dev;
-	}
-	else
-	{
-		if (head_slave)
-			kfree(head_slave);
-		if (tail_slave)
-			kfree(tail_slave);
-		kfree (queue);
-		return 0;
-	}
+	memset (queue, 0, sizeof (slave_queue_t));
+
+	head_slave->next = tail_slave;
+	tail_slave->next = 0;
+	queue->head = head_slave;
+	queue->num_slaves = 0;
+	queue->master_dev = dev;
 	return queue;
+
+err_out_hs:
+	kfree (head_slave);
+err_out_queue:
+	kfree (queue);
+err_out:
+	return NULL;
 }
 
 
@@ -1013,13 +985,13 @@
 	}
 }
 
-#ifdef MODULE
 static struct net_device dev_eql = 
 {
-	"eql", 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, eql_init 
+	name:	"eql",
+	init:	eql_init,
 };
 
-int init_module(void)
+static int __init eql_init_module(void)
 {
 	if (register_netdev(&dev_eql) != 0) {
 		printk("eql: register_netdev() returned non-zero.\n");
@@ -1028,13 +1000,15 @@
 	return 0;
 }
 
-void cleanup_module(void)
+static void __exit eql_cleanup_module(void)
 {
 	kfree(((equalizer_t *)dev_eql.priv)->stats );
 	kfree(dev_eql.priv);
 	unregister_netdev(&dev_eql);
 }
-#endif /* MODULE */
+
+module_init(eql_init_module);
+module_exit(eql_cleanup_module);
 
 /*
  * Local Variables: 

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