diff options
author | qwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-04-25 15:38:13 +0000 |
---|---|---|
committer | qwell <qwell@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2007-04-25 15:38:13 +0000 |
commit | 4f2e90f1a6033eb49b5eaf7a94666acf7f1ab017 (patch) | |
tree | f0028df962f9fb2565b943bd91302b0c8b1491f8 | |
parent | a461c286fb7d9aae69594f2d89b4f0a853ef57e2 (diff) |
Merged revisions 2444 via svnmerge from
https://origsvn.digium.com/svn/zaptel/branches/1.4
................
r2444 | qwell | 2007-04-25 10:36:17 -0500 (Wed, 25 Apr 2007) | 10 lines
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/trunk@2445 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r-- | zaptel.c | 21 |
1 files changed, 13 insertions, 8 deletions
@@ -1070,7 +1070,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) { @@ -3993,13 +3994,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); |