summaryrefslogtreecommitdiff
path: root/drivers/dahdi/dahdi-base.c
diff options
context:
space:
mode:
authorKevin P. Fleming <kpfleming@digium.com>2008-10-06 20:52:43 +0000
committerKevin P. Fleming <kpfleming@digium.com>2008-10-06 20:52:43 +0000
commit12dce060a24345836dc59931977da71ca6a5355d (patch)
treea588400282e901d8d916ae2952047a9cb0a31fad /drivers/dahdi/dahdi-base.c
parent4cd385cec344285e4fe732de22176b4806189d68 (diff)
use the same logic here as elsewhere for releasing echocan module references
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@5064 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/dahdi-base.c')
-rw-r--r--drivers/dahdi/dahdi-base.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index b58d47e..1b217bd 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -4975,6 +4975,8 @@ static int dahdi_chan_ioctl(struct inode *inode, struct file *file, unsigned int
chan->ppp = kzalloc(sizeof(struct ppp_channel), GFP_KERNEL);
if (chan->ppp) {
struct echo_can_state *tec;
+ const struct dahdi_echocan *ec_current;
+
chan->ppp->private = chan;
chan->ppp->ops = &ztppp_ops;
chan->ppp->mtu = DAHDI_DEFAULT_MTU_MRU;
@@ -4996,6 +4998,8 @@ static int dahdi_chan_ioctl(struct inode *inode, struct file *file, unsigned int
}
tec = chan->ec_state;
chan->ec_state = NULL;
+ ec_current = chan->ec_current;
+ chan->ec_current = NULL;
chan->echocancel = 0;
chan->echostate = ECHO_STATE_IDLE;
chan->echolastupdate = 0;
@@ -5010,8 +5014,10 @@ static int dahdi_chan_ioctl(struct inode *inode, struct file *file, unsigned int
chan->flags |= (DAHDI_FLAG_PPP | DAHDI_FLAG_HDLC | DAHDI_FLAG_FCS);
hw_echocancel_off(chan);
- if (tec)
- chan->ec_current->echo_can_free(tec);
+ if (tec) {
+ ec_current->echo_can_free(tec);
+ release_echocan(ec_current)
+ }
} else
return -ENOMEM;
}