From: Anders Fugmann <afu@fugmann.dhs.org>
To: netfilter-devel@lists.netfilter.org
Subject: remove usage of __MOD_XXX_USAGE_COUNT and derivatives
Date: Thu, 09 Jan 2003 22:52:45 +0100 [thread overview]
Message-ID: <3E1DEF2D.4080703@fugmann.dhs.org> (raw)
[-- 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 */
next reply other threads:[~2003-01-09 21:52 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-01-09 21:52 Anders Fugmann [this message]
2003-01-10 13:13 ` remove usage of __MOD_XXX_USAGE_COUNT and derivatives 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3E1DEF2D.4080703@fugmann.dhs.org \
--to=afu@fugmann.dhs.org \
--cc=netfilter-devel@lists.netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.