summaryrefslogtreecommitdiff
path: root/drivers/dahdi
diff options
context:
space:
mode:
authorShaun Ruffell <sruffell@digium.com>2008-09-26 03:20:49 +0000
committerShaun Ruffell <sruffell@digium.com>2008-09-26 03:20:49 +0000
commitfe97d6eadaf396c69e659e50ccfe548b0ed585fa (patch)
tree8c9bfb5d533691f1a34aeb28be4d2892afa33d7a /drivers/dahdi
parentb87aaf6bac241f8336f095a218519084afeceb60 (diff)
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
Diffstat (limited to 'drivers/dahdi')
-rw-r--r--drivers/dahdi/dahdi-base.c5
1 files changed, 3 insertions, 2 deletions
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;