diff options
author | Shaun Ruffell <sruffell@digium.com> | 2009-06-30 17:17:09 +0000 |
---|---|---|
committer | Shaun Ruffell <sruffell@digium.com> | 2009-06-30 17:17:09 +0000 |
commit | 414587d9e15e4fba53cc670b68752082cc94cff9 (patch) | |
tree | 92cee779ca4d24db87f105ace1d56edcb8790be1 /drivers/dahdi/dahdi-base.c | |
parent | 03827d00f9bb85bbb721db1c8f5293fc973f4a92 (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.c | 3 |
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); |