summaryrefslogtreecommitdiff
path: root/drivers/dahdi/dahdi-base.c
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/dahdi-base.c
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/dahdi-base.c')
-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;