From fe97d6eadaf396c69e659e50ccfe548b0ed585fa Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Fri, 26 Sep 2008 03:20:49 +0000 Subject: The channel master should not be set to 0, but rather should be 'cleared' by setting the channel to be it's own master. (related to issue 11611) git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@4990 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-base.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'drivers/dahdi') diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 48361e2..b9661aa 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -3838,11 +3838,11 @@ static int dahdi_ctl_ioctl(struct inode *inode, struct file *file, unsigned int if (!res && chans[ch.chan]->span->chanconfig) res = chans[ch.chan]->span->chanconfig(chans[ch.chan], ch.sigtype); - if (chans[ch.chan]->master) { + if (chans[ch.chan]->master != chans[ch.chan]) { struct dahdi_chan *oldmaster = chans[ch.chan]->master; /* Clear the master channel */ - chans[ch.chan]->master = 0; + chans[ch.chan]->master = chans[ch.chan]; chans[ch.chan]->nextslave = 0; /* Unlink this channel from the master's channel list */ recalc_slaves(oldmaster); @@ -4878,6 +4878,7 @@ static int dahdi_chan_ioctl(struct inode *inode, struct file *file, unsigned int int oldconf; void *rxgain=NULL; + WARN_ON(!chan->master); if (!chan) return -ENOSYS; -- cgit v1.2.3