diff options
author | Shaun Ruffell <sruffell@digium.com> | 2011-06-02 20:01:29 +0000 |
---|---|---|
committer | Shaun Ruffell <sruffell@digium.com> | 2011-06-02 20:01:29 +0000 |
commit | e1359adcca7980a13988af0366455bb2f4cb0980 (patch) | |
tree | ed404069551dc811df33e02f7f31f90009459112 /drivers/dahdi/dahdi-base.c | |
parent | b2b5fdd4e80044f06426c29d6167535c79881777 (diff) |
dahdi: Do not release the echocan under lock.
This allows any echocan cleanup to block if necessary. Especially useful
for hardware echocans that may need to wait for hardware to complete the
cleanup process.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@9939 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/dahdi-base.c')
-rw-r--r-- | drivers/dahdi/dahdi-base.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/dahdi/dahdi-base.c b/drivers/dahdi/dahdi-base.c index 2a5d6f9..cbc2961 100644 --- a/drivers/dahdi/dahdi-base.c +++ b/drivers/dahdi/dahdi-base.c @@ -1430,13 +1430,13 @@ static void close_channel(struct dahdi_chan *chan) if (chan->span && oldconf) dahdi_disable_dacs(chan); + spin_unlock_irqrestore(&chan->lock, flags); + if (ec_state) { ec_state->ops->echocan_free(chan, ec_state); release_echocan(ec_current); } - spin_unlock_irqrestore(&chan->lock, flags); - /* release conference resource, if any to release */ if (oldconf) dahdi_check_conf(oldconf); |