From 047fae63cb695f6e94e4be1c0ad4ea74f1c395f6 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Tue, 10 Aug 2010 22:08:02 +0000 Subject: dahdi: Fix oops when trying to dacs channels with a null dacs function. git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9120 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-base.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'drivers/dahdi') diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index d11029f..78f37c9 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -511,11 +511,14 @@ static inline void rotate_sums(void) static int dahdi_chan_dacs(struct dahdi_chan *chan1, struct dahdi_chan *chan2) { if (chan2) { - if (chan1->span && chan2->span && - (chan1->span->ops->dacs == chan2->span->ops->dacs)) + if (chan1->span && chan2->span && chan1->span->ops->dacs && + (chan1->span->ops->dacs == chan2->span->ops->dacs)) { return chan1->span->ops->dacs(chan1, chan2); - else + } else { + module_printk(KERN_ERR, "Unable cross connect '%s' " + "with '%s'\n", chan2->name, chan1->name); return -ENOSYS; + } } else { if (chan1->span && chan1->span->ops->dacs) return chan1->span->ops->dacs(chan1, NULL); @@ -4309,9 +4312,10 @@ static int dahdi_ctl_ioctl(struct file *file, unsigned int cmd, unsigned long da /* Setup conference properly */ chans[ch.chan]->confmode = DAHDI_CONF_DIGITALMON; chans[ch.chan]->confna = ch.idlebits; - dahdi_chan_dacs(chans[ch.chan], chans[ch.idlebits]); + res = dahdi_chan_dacs(chans[ch.chan], + chans[ch.idlebits]); } else { - dahdi_chan_dacs(chans[ch.chan], NULL); + res = dahdi_chan_dacs(chans[ch.chan], NULL); } chans[ch.chan]->master = newmaster; /* Note new slave if we are not our own master */ -- cgit v1.2.3