summaryrefslogtreecommitdiff
path: root/zaptel-base.c
diff options
context:
space:
mode:
authorqwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-04-25 15:36:17 +0000
committerqwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2007-04-25 15:36:17 +0000
commitbcde7758bf0c44ce1b603ebaf771734a8025b001 (patch)
tree041c7da466a0c2814eaeb5cf49c5981f8f4931b6 /zaptel-base.c
parent346228501af66c455e380901812a63341700fde8 (diff)
Merged revisions 2443 via svnmerge from
https://origsvn.digium.com/svn/zaptel/branches/1.2 ........ r2443 | qwell | 2007-04-25 10:35:34 -0500 (Wed, 25 Apr 2007) | 2 lines Don't try to reference a variable on a channel that may not exist. ........ git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@2444 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'zaptel-base.c')
-rw-r--r--zaptel-base.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/zaptel-base.c b/zaptel-base.c
index c4ff220..dbf39e9 100644
--- a/zaptel-base.c
+++ b/zaptel-base.c
@@ -1061,7 +1061,8 @@ static void close_channel(struct zt_chan *chan)
kfree(rxgain);
if (ec)
echo_can_free(ec);
- kfree(readchunkpreec);
+ if (readchunkpreec)
+ kfree(readchunkpreec);
#ifdef CONFIG_ZAPATA_PPP
if (ppp) {
@@ -3986,13 +3987,17 @@ static int zt_chanandpseudo_ioctl(struct inode *inode, struct file *file, unsign
chans[i]->_confn = zt_get_conf_alias(stack.conf.confno);
}
- if ((stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITOR_RX_PREECHO ||
- (stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITOR_TX_PREECHO ||
- (stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITORBOTH_PREECHO)
- chans[stack.conf.confno]->readchunkpreec = kmalloc(sizeof(*chans[stack.conf.confno]->readchunkpreec) * ZT_CHUNKSIZE, GFP_KERNEL);
- else {
- kfree(chans[stack.conf.confno]->readchunkpreec);
- chans[stack.conf.confno]->readchunkpreec = NULL;
+ if (chans[stack.conf.confno]) {
+ if ((stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITOR_RX_PREECHO ||
+ (stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITOR_TX_PREECHO ||
+ (stack.conf.confmode & ZT_CONF_MODE_MASK) == ZT_CONF_MONITORBOTH_PREECHO)
+ chans[stack.conf.confno]->readchunkpreec = kmalloc(sizeof(*chans[stack.conf.confno]->readchunkpreec) * ZT_CHUNKSIZE, GFP_KERNEL);
+ else {
+ if (chans[stack.conf.confno]->readchunkpreec) {
+ kfree(chans[stack.conf.confno]->readchunkpreec);
+ chans[stack.conf.confno]->readchunkpreec = NULL;
+ }
+ }
}
spin_unlock_irqrestore(&chan->lock, flags);