From 6153b1fcf7e517d836718a294d6e167666aec824 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Mon, 3 Jan 2011 18:27:31 +0000 Subject: dahdi: Use 'dacs_chan' convenience pointer in dahdi_ioctl_chanconfig. Eliminates the need to look for the channel number twice. Signed-off-by: Shaun Ruffell Acked-by: Kinsey Moore git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9599 a0bf4364-ded3-4de4-8d8a-66a801d63aff --- drivers/dahdi/dahdi-base.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 3376acc..5eeb2a5 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -4284,6 +4284,7 @@ static int dahdi_ioctl_chanconfig(struct file *file, unsigned long data) struct dahdi_chanconfig ch; struct dahdi_chan *newmaster; struct dahdi_chan *chan; + struct dahdi_chan *dacs_chan = NULL; unsigned long flags; int sigcap; @@ -4301,7 +4302,8 @@ static int dahdi_ioctl_chanconfig(struct file *file, unsigned long data) ch.sigtype = newmaster->sig; } else if ((ch.sigtype & __DAHDI_SIG_DACS) == __DAHDI_SIG_DACS) { newmaster = chan; - if (!chan_from_num(ch.idlebits)) + dacs_chan = chan_from_num(ch.idlebits); + if (!dacs_chan) return -EINVAL; } else { newmaster = chan; @@ -4378,10 +4380,14 @@ static int dahdi_ioctl_chanconfig(struct file *file, unsigned long data) chan->flags &= ~DAHDI_FLAG_FCS; } if ((ch.sigtype & __DAHDI_SIG_DACS) == __DAHDI_SIG_DACS) { + if (unlikely(!dacs_chan)) { + spin_unlock_irqrestore(&chan->lock, flags); + return -EINVAL; + } /* Setup conference properly */ chan->confmode = DAHDI_CONF_DIGITALMON; chan->confna = ch.idlebits; - res = dahdi_chan_dacs(chan, chan_from_num(ch.idlebits)); + res = dahdi_chan_dacs(chan, dacs_chan); } else { dahdi_disable_dacs(chan); } -- cgit v1.2.3