All of lore.kernel.org
 help / color / mirror / Atom feed
* remove usage of __MOD_XXX_USAGE_COUNT and derivatives
@ 2003-01-09 21:52 Anders Fugmann
  2003-01-10 13:13 ` Harald Welte
  2003-02-16 19:43 ` Anders Fugmann
  0 siblings, 2 replies; 15+ messages in thread
From: Anders Fugmann @ 2003-01-09 21:52 UTC (permalink / raw)
  To: netfilter-devel

[-- Attachment #1: Type: text/plain, Size: 526 bytes --]

Hi.

Attached is a trivial patch the converts the usage of the macros 
__MOD_INC_USAGE_COUNT and __MOD_DEC_USAGE_COUNT to try_modules_get and 
module_put.

Conversion enables module unloading on 2.5 kernels.
The patch is against 2.5.55. I have only tested ipv4 functionality, and 
I see no reason that ipv6 shound not work also.

Please examine the patch, and if ok I will send it to Linus for kernel 
inclusion (Unless someone on the list is the preferred person to do so - 
maybe Harald Welte?).

Regards
Anders Fugmann





[-- Attachment #2: netfilter-2.5.diff --]
[-- Type: text/plain, Size: 23150 bytes --]

diff -r -u linux-2.5.55/net/ipv4/netfilter/arp_tables.c linux-2.5.55-new/net/ipv4/netfilter/arp_tables.c
--- linux-2.5.55/net/ipv4/netfilter/arp_tables.c	2003-01-09 05:04:22.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/arp_tables.c	2003-01-09 22:23:43.000000000 +0100
@@ -539,8 +539,7 @@
 		duprintf("check_entry: `%s' not found\n", t->u.user.name);
 		goto out;
 	}
-	if (target->me)
-		__MOD_INC_USE_COUNT(target->me);
+	try_module_get(target->me);
 	t->u.kernel.target = target;
 	up(&arpt_mutex);
 
@@ -554,8 +553,7 @@
 						      t->u.target_size
 						      - sizeof(*t),
 						      e->comefrom)) {
-		if (t->u.kernel.target->me)
-			__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+	        module_put(t->u.kernel.target->me);
 		duprintf("arp_tables: check failed for `%s'.\n",
 			 t->u.kernel.target->name);
 		ret = -EINVAL;
@@ -622,8 +620,7 @@
 	if (t->u.kernel.target->destroy)
 		t->u.kernel.target->destroy(t->data,
 					    t->u.target_size - sizeof(*t));
-	if (t->u.kernel.target->me)
-		__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+	module_put(t->u.kernel.target->me);
 
 	return 0;
 }
@@ -918,12 +915,12 @@
 	/* Update module usage count based on number of rules */
 	duprintf("do_replace: oldnum=%u, initnum=%u, newnum=%u\n",
 		oldinfo->number, oldinfo->initial_entries, newinfo->number);
-	if (t->me && (oldinfo->number <= oldinfo->initial_entries) &&
+	if ((oldinfo->number <= oldinfo->initial_entries) &&
  	    (newinfo->number > oldinfo->initial_entries))
-		__MOD_INC_USE_COUNT(t->me);
-	else if (t->me && (oldinfo->number > oldinfo->initial_entries) &&
+		try_module_get(t->me);
+	else if ((oldinfo->number > oldinfo->initial_entries) &&
 	 	 (newinfo->number <= oldinfo->initial_entries))
-		__MOD_DEC_USE_COUNT(t->me);
+		module_put(t->me);
 
 	/* Get the old counters. */
 	get_counters(oldinfo, counters);
@@ -1110,17 +1107,17 @@
 {
 	int ret;
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	ret = down_interruptible(&arpt_mutex);
 	if (ret != 0) {
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 		return ret;
 	}
 	if (!list_named_insert(&arpt_target, target)) {
 		duprintf("arpt_register_target: `%s' already in list!\n",
 			 target->name);
 		ret = -EINVAL;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 	}
 	up(&arpt_mutex);
 	return ret;
@@ -1131,7 +1128,7 @@
 	down(&arpt_mutex);
 	LIST_DELETE(&arpt_target, target);
 	up(&arpt_mutex);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 int arpt_register_table(struct arpt_table *table)
@@ -1141,12 +1138,12 @@
 	static struct arpt_table_info bootstrap
 		= { 0, 0, 0, { 0 }, { 0 }, { } };
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	newinfo = vmalloc(sizeof(struct arpt_table_info)
 			  + SMP_ALIGN(table->table->size) * NR_CPUS);
 	if (!newinfo) {
 		ret = -ENOMEM;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 	memcpy(newinfo->entries, table->table->entries, table->table->size);
@@ -1159,14 +1156,14 @@
 	duprintf("arpt_register_table: translate table gives %d\n", ret);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
 	ret = down_interruptible(&arpt_mutex);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
@@ -1196,7 +1193,7 @@
 
  free_unlock:
 	vfree(newinfo);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 	goto unlock;
 }
 
@@ -1210,7 +1207,7 @@
 	ARPT_ENTRY_ITERATE(table->private->entries, table->private->size,
 			   cleanup_entry, NULL);
 	vfree(table->private);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 /* The built-in targets: standard (NULL) and error. */
diff -r -u linux-2.5.55/net/ipv4/netfilter/ip_conntrack_core.c linux-2.5.55-new/net/ipv4/netfilter/ip_conntrack_core.c
--- linux-2.5.55/net/ipv4/netfilter/ip_conntrack_core.c	2003-01-09 05:03:49.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ip_conntrack_core.c	2003-01-09 22:23:43.000000000 +0100
@@ -1126,7 +1126,7 @@
 
 int ip_conntrack_helper_register(struct ip_conntrack_helper *me)
 {
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 
 	WRITE_LOCK(&ip_conntrack_lock);
 	list_prepend(&helpers, me);
@@ -1165,7 +1165,7 @@
 	br_write_lock_bh(BR_NETPROTO_LOCK);
 	br_write_unlock_bh(BR_NETPROTO_LOCK);
 
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 /* Refresh conntrack for this many jiffies. */
diff -r -u linux-2.5.55/net/ipv4/netfilter/ip_conntrack_standalone.c linux-2.5.55-new/net/ipv4/netfilter/ip_conntrack_standalone.c
--- linux-2.5.55/net/ipv4/netfilter/ip_conntrack_standalone.c	2003-01-09 05:04:13.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ip_conntrack_standalone.c	2003-01-09 22:23:43.000000000 +0100
@@ -310,7 +310,7 @@
 	}
 
 	list_prepend(&protocol_list, proto);
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 
  out:
 	WRITE_UNLOCK(&ip_conntrack_lock);
@@ -333,7 +333,7 @@
 	/* Remove all contrack entries for this protocol */
 	ip_ct_selective_cleanup(kill_proto, &proto->proto);
 
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 static int __init init(void)
diff -r -u linux-2.5.55/net/ipv4/netfilter/ip_nat_helper.c linux-2.5.55-new/net/ipv4/netfilter/ip_nat_helper.c
--- linux-2.5.55/net/ipv4/netfilter/ip_nat_helper.c	2003-01-09 05:03:55.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ip_nat_helper.c	2003-01-09 22:28:37.000000000 +0100
@@ -368,10 +368,9 @@
 	if (me->me && !(me->flags & IP_NAT_HELPER_F_STANDALONE)) {
 		struct ip_conntrack_helper *ct_helper;
 		
-		if ((ct_helper = ip_ct_find_helper(&me->tuple))
-		    && ct_helper->me) {
-			__MOD_INC_USE_COUNT(ct_helper->me);
-		} else {
+		if (!(ct_helper = ip_ct_find_helper(&me->tuple)) ||
+		    (!(try_module_get(ct_helper->me))))
+		{
 			/* We are a NAT helper for protocol X.  If we need
 			 * respective conntrack helper for protoccol X, compute
 			 * conntrack helper name and try to load module */
@@ -387,11 +386,9 @@
 			tmp += 6;
 			sprintf(name, "ip_conntrack%s", tmp);
 #ifdef CONFIG_KMOD
-			if (!request_module(name)
-			    && (ct_helper = ip_ct_find_helper(&me->tuple))
-			    && ct_helper->me) {
-				__MOD_INC_USE_COUNT(ct_helper->me);
-			} else {
+			if (request_module(name)
+			    || (!(ct_helper = ip_ct_find_helper(&me->tuple)))
+			    || (!try_module_get(ct_helper->me))) { 
 				printk("unable to load module %s\n", name);
 				return -EBUSY;
 			}
@@ -408,7 +405,8 @@
 		ret = -EBUSY;
 	else {
 		list_prepend(&helpers, me);
-		MOD_INC_USE_COUNT;
+
+		try_module_get(THIS_MODULE);
 	}
 	WRITE_UNLOCK(&ip_nat_lock);
 
@@ -453,22 +451,17 @@
 	ip_ct_selective_cleanup(kill_helper, me);
 
 	if (found)
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 
 	/* If we are no standalone NAT helper, we need to decrement usage count
 	 * on our conntrack helper */
 	if (me->me && !(me->flags & IP_NAT_HELPER_F_STANDALONE)) {
 		struct ip_conntrack_helper *ct_helper;
 		
-		if ((ct_helper = ip_ct_find_helper(&me->tuple))
-		    && ct_helper->me) {
-			__MOD_DEC_USE_COUNT(ct_helper->me);
-		}
-#ifdef CONFIG_MODULES
-		else 
-			printk("%s: unable to decrement usage count"
-			       " of conntrack helper %s\n",
-			       __FUNCTION__, me->me->name);
-#endif
+		if ((ct_helper = ip_ct_find_helper(&me->tuple)))
+		        if (!try_module_get(ct_helper->me))
+			        printk("%s: unable to decrement usage count"
+				       " of conntrack helper %s\n",
+				       __FUNCTION__, me->me->name);
 	}
 }
diff -r -u linux-2.5.55/net/ipv4/netfilter/ip_nat_standalone.c linux-2.5.55-new/net/ipv4/netfilter/ip_nat_standalone.c
--- linux-2.5.55/net/ipv4/netfilter/ip_nat_standalone.c	2003-01-09 05:04:22.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ip_nat_standalone.c	2003-01-09 22:23:43.000000000 +0100
@@ -255,7 +255,7 @@
 	}
 
 	list_prepend(&protos, proto);
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 
  out:
 	WRITE_UNLOCK(&ip_nat_lock);
@@ -273,7 +273,7 @@
 	br_write_lock_bh(BR_NETPROTO_LOCK);
 	br_write_unlock_bh(BR_NETPROTO_LOCK);
 
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 static int init_or_cleanup(int init)
@@ -314,13 +314,11 @@
 		goto cleanup_localoutops;
 	}
 #endif
-	if (ip_conntrack_module)
-		__MOD_INC_USE_COUNT(ip_conntrack_module);
+	try_module_get(ip_conntrack_module);
 	return ret;
 
  cleanup:
-	if (ip_conntrack_module)
-		__MOD_DEC_USE_COUNT(ip_conntrack_module);
+	module_put(ip_conntrack_module);
 #ifdef CONFIG_IP_NF_NAT_LOCAL
 	nf_unregister_hook(&ip_nat_local_in_ops);
  cleanup_localoutops:
diff -r -u linux-2.5.55/net/ipv4/netfilter/ip_tables.c linux-2.5.55-new/net/ipv4/netfilter/ip_tables.c
--- linux-2.5.55/net/ipv4/netfilter/ip_tables.c	2003-01-09 05:03:58.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ip_tables.c	2003-01-09 22:23:43.000000000 +0100
@@ -599,8 +599,7 @@
 		m->u.kernel.match->destroy(m->data,
 					   m->u.match_size - sizeof(*m));
 
-	if (m->u.kernel.match->me)
-		__MOD_DEC_USE_COUNT(m->u.kernel.match->me);
+	module_put(m->u.kernel.match->me);
 
 	return 0;
 }
@@ -650,8 +649,7 @@
 		duprintf("check_match: `%s' not found\n", m->u.user.name);
 		return ret;
 	}
-	if (match->me)
-		__MOD_INC_USE_COUNT(match->me);
+	try_module_get(match->me);
 	m->u.kernel.match = match;
 	up(&ipt_mutex);
 
@@ -659,8 +657,7 @@
 	    && !m->u.kernel.match->checkentry(name, ip, m->data,
 					      m->u.match_size - sizeof(*m),
 					      hookmask)) {
-		if (m->u.kernel.match->me)
-			__MOD_DEC_USE_COUNT(m->u.kernel.match->me);
+		module_put(m->u.kernel.match->me);
 		duprintf("ip_tables: check failed for `%s'.\n",
 			 m->u.kernel.match->name);
 		return -EINVAL;
@@ -697,8 +694,7 @@
 		duprintf("check_entry: `%s' not found\n", t->u.user.name);
 		goto cleanup_matches;
 	}
-	if (target->me)
-		__MOD_INC_USE_COUNT(target->me);
+	try_module_get(target->me);
 	t->u.kernel.target = target;
 	up(&ipt_mutex);
 
@@ -712,8 +708,7 @@
 						      t->u.target_size
 						      - sizeof(*t),
 						      e->comefrom)) {
-		if (t->u.kernel.target->me)
-			__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+		module_put(t->u.kernel.target->me);
 		duprintf("ip_tables: check failed for `%s'.\n",
 			 t->u.kernel.target->name);
 		ret = -EINVAL;
@@ -785,8 +780,7 @@
 	if (t->u.kernel.target->destroy)
 		t->u.kernel.target->destroy(t->data,
 					    t->u.target_size - sizeof(*t));
-	if (t->u.kernel.target->me)
-		__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+	module_put(t->u.kernel.target->me);
 
 	return 0;
 }
@@ -1115,12 +1109,12 @@
 	/* Update module usage count based on number of rules */
 	duprintf("do_replace: oldnum=%u, initnum=%u, newnum=%u\n",
 		oldinfo->number, oldinfo->initial_entries, newinfo->number);
-	if (t->me && (oldinfo->number <= oldinfo->initial_entries) &&
+	if ((oldinfo->number <= oldinfo->initial_entries) &&
  	    (newinfo->number > oldinfo->initial_entries))
-		__MOD_INC_USE_COUNT(t->me);
-	else if (t->me && (oldinfo->number > oldinfo->initial_entries) &&
+		try_module_get(t->me);
+	else if ((oldinfo->number > oldinfo->initial_entries) &&
 	 	 (newinfo->number <= oldinfo->initial_entries))
-		__MOD_DEC_USE_COUNT(t->me);
+		module_put(t->me);
 
 	/* Get the old counters. */
 	get_counters(oldinfo, counters);
@@ -1319,17 +1313,17 @@
 {
 	int ret;
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	ret = down_interruptible(&ipt_mutex);
 	if (ret != 0) {
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 		return ret;
 	}
 	if (!list_named_insert(&ipt_target, target)) {
 		duprintf("ipt_register_target: `%s' already in list!\n",
 			 target->name);
 		ret = -EINVAL;
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 	}
 	up(&ipt_mutex);
 	return ret;
@@ -1341,7 +1335,7 @@
 	down(&ipt_mutex);
 	LIST_DELETE(&ipt_target, target);
 	up(&ipt_mutex);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 int
@@ -1349,16 +1343,16 @@
 {
 	int ret;
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	ret = down_interruptible(&ipt_mutex);
 	if (ret != 0) {
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 		return ret;
 	}
 	if (!list_named_insert(&ipt_match, match)) {
 		duprintf("ipt_register_match: `%s' already in list!\n",
 			 match->name);
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 		ret = -EINVAL;
 	}
 	up(&ipt_mutex);
@@ -1372,7 +1366,7 @@
 	down(&ipt_mutex);
 	LIST_DELETE(&ipt_match, match);
 	up(&ipt_mutex);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 int ipt_register_table(struct ipt_table *table)
@@ -1382,12 +1376,12 @@
 	static struct ipt_table_info bootstrap
 		= { 0, 0, 0, { 0 }, { 0 }, { } };
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	newinfo = vmalloc(sizeof(struct ipt_table_info)
 			  + SMP_ALIGN(table->table->size) * NR_CPUS);
 	if (!newinfo) {
 		ret = -ENOMEM;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 	memcpy(newinfo->entries, table->table->entries, table->table->size);
@@ -1399,14 +1393,14 @@
 			      table->table->underflow);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
 	ret = down_interruptible(&ipt_mutex);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
@@ -1436,7 +1430,7 @@
 
  free_unlock:
 	vfree(newinfo);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 	goto unlock;
 }
 
@@ -1450,7 +1444,7 @@
 	IPT_ENTRY_ITERATE(table->private->entries, table->private->size,
 			  cleanup_entry, NULL);
 	vfree(table->private);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 /* Returns 1 if the port is matched by the range, 0 otherwise */
diff -r -u linux-2.5.55/net/ipv4/netfilter/ipchains_core.c linux-2.5.55-new/net/ipv4/netfilter/ipchains_core.c
--- linux-2.5.55/net/ipv4/netfilter/ipchains_core.c	2003-01-09 05:04:24.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ipchains_core.c	2003-01-09 22:23:43.000000000 +0100
@@ -839,7 +839,7 @@
 			i->branch->refcount--;
 		kfree(i);
 		i = tmp;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 	}
 	return 0;
 }
@@ -886,7 +886,7 @@
 	if (rule->branch) rule->branch->refcount++;
 
 append_successful:
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	return 0;
 }
 
@@ -917,7 +917,7 @@
 	f->next = frwl;
 
 insert_successful:
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	return 0;
 }
 
@@ -952,7 +952,7 @@
 		kfree(tmp);
 	}
 
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 	return 0;
 }
 
@@ -1059,7 +1059,7 @@
 		else
 			chainptr->chain = ftmp->next;
 		kfree(ftmp);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		break;
 	}
 
@@ -1101,7 +1101,7 @@
 	tmp->next = tmp2->next;
 	kfree(tmp2);
 
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 	return 0;
 }
 
@@ -1154,7 +1154,7 @@
 					      * user defined chain *
 					      * and therefore can be
 					      * deleted */
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	return 0;
 }
 
diff -r -u linux-2.5.55/net/ipv4/netfilter/ipfwadm_core.c linux-2.5.55-new/net/ipv4/netfilter/ipfwadm_core.c
--- linux-2.5.55/net/ipv4/netfilter/ipfwadm_core.c	2003-01-09 05:04:12.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ipfwadm_core.c	2003-01-09 22:23:43.000000000 +0100
@@ -705,7 +705,7 @@
 		ftmp = *chainptr;
 		*chainptr = ftmp->fw_next;
 		kfree(ftmp);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 	}
 	WRITE_UNLOCK(&ip_fw_lock);
 }
@@ -746,7 +746,7 @@
 	ftmp->fw_next = *chainptr;
        	*chainptr=ftmp;
 	WRITE_UNLOCK(&ip_fw_lock);
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	return(0);
 }
 
@@ -794,7 +794,7 @@
 	else
         	*chainptr=ftmp;
 	WRITE_UNLOCK(&ip_fw_lock);
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	return(0);
 }
 
@@ -867,7 +867,7 @@
 	}
 	WRITE_UNLOCK(&ip_fw_lock);
 	if (was_found) {
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return 0;
 	} else
 		return(EINVAL);
diff -r -u linux-2.5.55/net/ipv4/netfilter/ipt_conntrack.c linux-2.5.55-new/net/ipv4/netfilter/ipt_conntrack.c
--- linux-2.5.55/net/ipv4/netfilter/ipt_conntrack.c	2003-01-09 05:04:25.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ipt_conntrack.c	2003-01-09 22:23:43.000000000 +0100
@@ -106,16 +106,14 @@
 static int __init init(void)
 {
 	/* NULL if ip_conntrack not a module */
-	if (ip_conntrack_module)
-		__MOD_INC_USE_COUNT(ip_conntrack_module);
+	try_module_get(ip_conntrack_module);
 	return ipt_register_match(&conntrack_match);
 }
 
 static void __exit fini(void)
 {
 	ipt_unregister_match(&conntrack_match);
-	if (ip_conntrack_module)
-		__MOD_DEC_USE_COUNT(ip_conntrack_module);
+	module_put(ip_conntrack_module);
 }
 
 module_init(init);
diff -r -u linux-2.5.55/net/ipv4/netfilter/ipt_helper.c linux-2.5.55-new/net/ipv4/netfilter/ipt_helper.c
--- linux-2.5.55/net/ipv4/netfilter/ipt_helper.c	2003-01-09 05:04:20.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ipt_helper.c	2003-01-09 22:23:43.000000000 +0100
@@ -95,16 +95,14 @@
 static int __init init(void)
 {
 	/* NULL if ip_conntrack not a module */
-	if (ip_conntrack_module)
-		__MOD_INC_USE_COUNT(ip_conntrack_module);
+	try_module_get(ip_conntrack_module);
 	return ipt_register_match(&helper_match);
 }
 
 static void __exit fini(void)
 {
 	ipt_unregister_match(&helper_match);
-	if (ip_conntrack_module)
-		__MOD_DEC_USE_COUNT(ip_conntrack_module);
+	module_put(ip_conntrack_module);
 }
 
 module_init(init);
diff -r -u linux-2.5.55/net/ipv4/netfilter/ipt_state.c linux-2.5.55-new/net/ipv4/netfilter/ipt_state.c
--- linux-2.5.55/net/ipv4/netfilter/ipt_state.c	2003-01-09 05:04:27.000000000 +0100
+++ linux-2.5.55-new/net/ipv4/netfilter/ipt_state.c	2003-01-09 22:23:43.000000000 +0100
@@ -47,16 +47,14 @@
 static int __init init(void)
 {
 	/* NULL if ip_conntrack not a module */
-	if (ip_conntrack_module)
-		__MOD_INC_USE_COUNT(ip_conntrack_module);
+	try_module_get(ip_conntrack_module);
 	return ipt_register_match(&state_match);
 }
 
 static void __exit fini(void)
 {
 	ipt_unregister_match(&state_match);
-	if (ip_conntrack_module)
-		__MOD_DEC_USE_COUNT(ip_conntrack_module);
+	module_put(ip_conntrack_module);
 }
 
 module_init(init);
diff -r -u linux-2.5.55/net/ipv6/netfilter/ip6_tables.c linux-2.5.55-new/net/ipv6/netfilter/ip6_tables.c
--- linux-2.5.55/net/ipv6/netfilter/ip6_tables.c	2003-01-09 05:04:24.000000000 +0100
+++ linux-2.5.55-new/net/ipv6/netfilter/ip6_tables.c	2003-01-09 22:23:43.000000000 +0100
@@ -672,8 +672,7 @@
 		m->u.kernel.match->destroy(m->data,
 					   m->u.match_size - sizeof(*m));
 
-	if (m->u.kernel.match->me)
-		__MOD_DEC_USE_COUNT(m->u.kernel.match->me);
+	module_put(m->u.kernel.match->me);
 
 	return 0;
 }
@@ -723,8 +722,7 @@
 	  //		duprintf("check_match: `%s' not found\n", m->u.name);
 		return ret;
 	}
-	if (match->me)
-		__MOD_INC_USE_COUNT(match->me);
+	try_module_get(match->me);
 	m->u.kernel.match = match;
 	up(&ip6t_mutex);
 
@@ -732,8 +730,7 @@
 	    && !m->u.kernel.match->checkentry(name, ipv6, m->data,
 					      m->u.match_size - sizeof(*m),
 					      hookmask)) {
-		if (m->u.kernel.match->me)
-			__MOD_DEC_USE_COUNT(m->u.kernel.match->me);
+	        module_put(m->u.kernel.match->me);
 		duprintf("ip_tables: check failed for `%s'.\n",
 			 m->u.kernel.match->name);
 		return -EINVAL;
@@ -770,8 +767,7 @@
 		duprintf("check_entry: `%s' not found\n", t->u.user.name);
 		goto cleanup_matches;
 	}
-	if (target->me)
-		__MOD_INC_USE_COUNT(target->me);
+	try_module_get(target->me);
 	t->u.kernel.target = target;
 	up(&ip6t_mutex);
 
@@ -785,8 +781,7 @@
 						      t->u.target_size
 						      - sizeof(*t),
 						      e->comefrom)) {
-		if (t->u.kernel.target->me)
-			__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+		module_put(t->u.kernel.target->me);
 		duprintf("ip_tables: check failed for `%s'.\n",
 			 t->u.kernel.target->name);
 		ret = -EINVAL;
@@ -858,8 +853,7 @@
 	if (t->u.kernel.target->destroy)
 		t->u.kernel.target->destroy(t->data,
 					    t->u.target_size - sizeof(*t));
-	if (t->u.kernel.target->me)
-		__MOD_DEC_USE_COUNT(t->u.kernel.target->me);
+	module_put(t->u.kernel.target->me);
 
 	return 0;
 }
@@ -1184,12 +1178,12 @@
 	/* Update module usage count based on number of rules */
 	duprintf("do_replace: oldnum=%u, initnum=%u, newnum=%u\n",
 		oldinfo->number, oldinfo->initial_entries, newinfo->number);
-	if (t->me && (oldinfo->number <= oldinfo->initial_entries) &&
+	if ((oldinfo->number <= oldinfo->initial_entries) &&
  	    (newinfo->number > oldinfo->initial_entries))
-		__MOD_INC_USE_COUNT(t->me);
-	else if (t->me && (oldinfo->number > oldinfo->initial_entries) &&
+		try_module_get(t->me);
+	else if ((oldinfo->number > oldinfo->initial_entries) &&
 	 	 (newinfo->number <= oldinfo->initial_entries))
-		__MOD_DEC_USE_COUNT(t->me);
+		module_put(t->me);
 
 	/* Get the old counters. */
 	get_counters(oldinfo, counters);
@@ -1388,17 +1382,17 @@
 {
 	int ret;
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	ret = down_interruptible(&ip6t_mutex);
 	if (ret != 0) {
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 	if (!list_named_insert(&ip6t_target, target)) {
 		duprintf("ip6t_register_target: `%s' already in list!\n",
 			 target->name);
 		ret = -EINVAL;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 	}
 	up(&ip6t_mutex);
 	return ret;
@@ -1410,7 +1404,7 @@
 	down(&ip6t_mutex);
 	LIST_DELETE(&ip6t_target, target);
 	up(&ip6t_mutex);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 int
@@ -1418,16 +1412,16 @@
 {
 	int ret;
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	ret = down_interruptible(&ip6t_mutex);
 	if (ret != 0) {
-		MOD_DEC_USE_COUNT;
+	        module_put(THIS_MODULE);
 		return ret;
 	}
 	if (!list_named_insert(&ip6t_match, match)) {
 		duprintf("ip6t_register_match: `%s' already in list!\n",
 			 match->name);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		ret = -EINVAL;
 	}
 	up(&ip6t_mutex);
@@ -1441,7 +1435,7 @@
 	down(&ip6t_mutex);
 	LIST_DELETE(&ip6t_match, match);
 	up(&ip6t_mutex);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 int ip6t_register_table(struct ip6t_table *table)
@@ -1451,12 +1445,12 @@
 	static struct ip6t_table_info bootstrap
 		= { 0, 0, 0, { 0 }, { 0 }, { }, { } };
 
-	MOD_INC_USE_COUNT;
+	try_module_get(THIS_MODULE);
 	newinfo = vmalloc(sizeof(struct ip6t_table_info)
 			  + SMP_ALIGN(table->table->size) * NR_CPUS);
 	if (!newinfo) {
 		ret = -ENOMEM;
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 	memcpy(newinfo->entries, table->table->entries, table->table->size);
@@ -1468,14 +1462,14 @@
 			      table->table->underflow);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
 	ret = down_interruptible(&ip6t_mutex);
 	if (ret != 0) {
 		vfree(newinfo);
-		MOD_DEC_USE_COUNT;
+		module_put(THIS_MODULE);
 		return ret;
 	}
 
@@ -1505,7 +1499,7 @@
 
  free_unlock:
 	vfree(newinfo);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 	goto unlock;
 }
 
@@ -1519,7 +1513,7 @@
 	IP6T_ENTRY_ITERATE(table->private->entries, table->private->size,
 			  cleanup_entry, NULL);
 	vfree(table->private);
-	MOD_DEC_USE_COUNT;
+	module_put(THIS_MODULE);
 }
 
 /* Returns 1 if the port is matched by the range, 0 otherwise */

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2003-02-16 19:43 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-01-09 21:52 remove usage of __MOD_XXX_USAGE_COUNT and derivatives Anders Fugmann
2003-01-10 13:13 ` Harald Welte
2003-01-10 13:49   ` Anders Fugmann
2003-01-10 13:49     ` Harald Welte
2003-01-10 15:21       ` Anders Fugmann
2003-01-12 16:36         ` Harald Welte
2003-01-12 22:14           ` Bart De Schuymer
2003-01-13 16:58             ` Anders Fugmann
2003-01-13 22:56               ` Bart De Schuymer
2003-01-13 22:21                 ` Anders Fugmann
2003-01-13 23:53                   ` Bart De Schuymer
     [not found]                     ` <3E234A92.50606@fugmann.dhs.org>
2003-01-14  1:14                       ` Bart De Schuymer
2003-01-11 16:13     ` Bart De Schuymer
2003-01-11 18:36       ` Anders Fugmann
2003-02-16 19:43 ` Anders Fugmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.