From e7324ee365da30e9b7b18d6baaec5ae21de1894b Mon Sep 17 00:00:00 2001 From: tilghman Date: Thu, 22 Jun 2006 17:28:56 +0000 Subject: 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 --- ztd-eth.c | 7 ++++++- ztd-loc.c | 5 +++++ ztdynamic.c | 5 +++++ 3 files changed, 16 insertions(+), 1 deletion(-) 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; } -- cgit v1.2.3