summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortilghman <tilghman@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-06-22 17:28:56 +0000
committertilghman <tilghman@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2006-06-22 17:28:56 +0000
commite7324ee365da30e9b7b18d6baaec5ae21de1894b (patch)
tree8df2074bbe7e472c159c576d83b7a627187ec910
parente24032b52a39309a73258d024c451726bee3cf84 (diff)
Bug 7284 - Properly lock ztdynamic modules under kernel 2.6
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@1155 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r--ztd-eth.c7
-rw-r--r--ztd-loc.c5
-rw-r--r--ztdynamic.c5
3 files changed, 16 insertions, 1 deletions
diff --git a/ztd-eth.c b/ztd-eth.c
index c13a32d..41cc896 100644
--- a/ztd-eth.c
+++ b/ztd-eth.c
@@ -266,6 +266,8 @@ static void ztdeth_destroy(void *pvt)
kfree(z);
#ifndef LINUX26
MOD_DEC_USE_COUNT;
+#else
+ module_put(THIS_MODULE);
#endif
}
}
@@ -359,13 +361,16 @@ static void *ztdeth_create(struct zt_span *span, char *addr)
sprintf(src + strlen(src), "%02x:", z->dev->dev_addr[x]);
sprintf(src + strlen(src), "%02x", z->dev->dev_addr[5]);
printk("TDMoE: Added new interface for %s at %s (addr=%s, src=%s, subaddr=%d)\n", span->name, z->dev->name, addr, src, ntohs(z->subaddr));
-
+
spin_lock_irqsave(&zlock, flags);
z->next = zdevs;
zdevs = z;
spin_unlock_irqrestore(&zlock, flags);
#ifndef LINUX26
MOD_INC_USE_COUNT;
+#else
+ if(!try_module_get(THIS_MODULE))
+ printk("TDMoE: Unable to increment module use count\n");
#endif
}
return z;
diff --git a/ztd-loc.c b/ztd-loc.c
index 100bd9f..0458293 100644
--- a/ztd-loc.c
+++ b/ztd-loc.c
@@ -162,6 +162,8 @@ static int digit2int(char d)
printk("TDMoL: Removed interface for %s, key %d id %d\n", z->span->name, z->key, z->id);
#ifndef LINUX26
MOD_DEC_USE_COUNT;
+#else
+ module_put(THIS_MODULE);
#endif
kfree(z);
}
@@ -229,6 +231,9 @@ static int digit2int(char d)
spin_unlock_irqrestore(&zlock, flags);
#ifndef LINUX26
MOD_INC_USE_COUNT;
+#else
+ if(!try_module_get(THIS_MODULE))
+ printk("TDMoL: Unable to increment module use count\n");
#endif
printk("TDMoL: Added new interface for %s, key %d id %d\n", span->name, z->key, z->id);
diff --git a/ztdynamic.c b/ztdynamic.c
index 9ba329d..f15799b 100644
--- a/ztdynamic.c
+++ b/ztdynamic.c
@@ -497,6 +497,9 @@ static int ztd_open(struct zt_chan *chan)
}
#ifndef LINUX26
MOD_INC_USE_COUNT;
+#else
+ if(!try_module_get(THIS_MODULE))
+ printk("TDMoX: Unable to increment module use count\n");
#endif
return 0;
}
@@ -516,6 +519,8 @@ static int ztd_close(struct zt_chan *chan)
dynamic_destroy(z);
#ifndef LINUX26
MOD_DEC_USE_COUNT;
+#else
+ module_put(THIS_MODULE);
#endif
return 0;
}