summaryrefslogtreecommitdiff
path: root/drivers/dahdi/dahdi-base.c
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2009-06-30 17:17:09 +0000
committerShaun Ruffell <sruffell@digium.com>2009-06-30 17:17:09 +0000
commit414587d9e15e4fba53cc670b68752082cc94cff9 (patch)
tree92cee779ca4d24db87f105ace1d56edcb8790be1 /drivers/dahdi/dahdi-base.c
parent03827d00f9bb85bbb721db1c8f5293fc973f4a92 (diff)
echocan: Do not call through NULL 'echocan_traintap' pointer.
This resolves an issue with a kernel panic if echotraining is enabled in the Asterisk configuration file, but the echocan on the channel (which may be a hardware echocanceller) has not defined that operation. DAHDI-272. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@6801 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/dahdi-base.c')
-rw-r--r--drivers/dahdi/dahdi-base.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index 71b2063..e88fcec 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -6688,7 +6688,8 @@ static inline void __dahdi_ec_chunk(struct dahdi_chan *ss, unsigned char *rxchun
ss->ec_state->status.last_train_tap = 0;
ss->ec_state->status.mode = ECHO_MODE_TRAINING;
}
- if (ss->ec_state->status.mode == ECHO_MODE_TRAINING) {
+ if ((ss->ec_state->status.mode == ECHO_MODE_TRAINING) &&
+ (ss->ec_state->ops->echocan_traintap)) {
if (ss->ec_state->ops->echocan_traintap(ss->ec_state, ss->ec_state->status.last_train_tap++, rxlin)) {
#if 0
module_printk(KERN_NOTICE, "Finished training (%d taps trained)!\n", ss->ec_state->status.last_train_tap);