summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorKevin P. Fleming <kpfleming@digium.com>2008-08-01 23:07:28 +0000
committerKevin P. Fleming <kpfleming@digium.com>2008-08-01 23:07:28 +0000
commit068904f16606b21ab7512111bcd0aa1530ae365d (patch)
tree3be9ca0d0028e568a28a67e9baa7e70f55b362f3 /drivers
parentb1d5eacd39dc424071d9997509757013dcdde45d (diff)
use correct logic to handle a slave channel being removed from a master channel, so if the master channel itself is not reconfigured it will still end up properly linking to any remaining slaves
(closes issue #11611) Reported by: richvdh Tested by: tzafrir git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@4653 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers')
-rw-r--r--drivers/dahdi/dahdi-base.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c
index 31ed4af..1bca00a 100644
--- a/drivers/dahdi/dahdi-base.c
+++ b/drivers/dahdi/dahdi-base.c
@@ -3715,9 +3715,13 @@ static int dahdi_ctl_ioctl(struct inode *inode, struct file *file, unsigned int
res = chans[ch.chan]->span->chanconfig(chans[ch.chan], ch.sigtype);
if (chans[ch.chan]->master) {
+ struct dahdi_chan *oldmaster = chans[ch.chan]->master;
+
/* Clear the master channel */
- recalc_slaves(chans[ch.chan]->master);
+ chans[ch.chan]->master = 0;
chans[ch.chan]->nextslave = 0;
+ /* Unlink this channel from the master's channel list */
+ recalc_slaves(oldmaster);
}
if (!res) {