summaryrefslogtreecommitdiff
path: root/zaptel.c
diff options
context:
space:
mode:
authormarkster <markster@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2005-01-12 15:59:59 +0000
committermarkster <markster@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2005-01-12 15:59:59 +0000
commitfdbf56134e059e90098da78fc916f80fa7c77190 (patch)
treeedef52f5ea46fd02b2a6d674827adc887e854233 /zaptel.c
parent35ef872196711b990527676ecfe9e2e090e48197 (diff)
Commit belated fix for 3312
git-svn-id: http://svn.digium.com/svn/zaptel/trunk@542 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'zaptel.c')
-rwxr-xr-xzaptel.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/zaptel.c b/zaptel.c
index d28b40b..4e6a1e0 100755
--- a/zaptel.c
+++ b/zaptel.c
@@ -4089,19 +4089,21 @@ static int zt_chan_ioctl(struct inode *inode, struct file *file, unsigned int cm
rv = 0;
break;
case ZT_HOOK:
+ get_user(j,(int *)data);
if (chan->flags & ZT_FLAG_CLEAR)
return -EINVAL;
if (chan->sig == ZT_SIG_CAS)
return -EINVAL;
/* if no span, just do nothing */
if (!chan->span) return(0);
+ spin_lock_irqsave(&chan->lock, flags);
/* if dialing, stop it */
chan->curtone = NULL;
chan->dialing = 0;
chan->txdialbuf[0] = '\0';
chan->tonep = 0;
chan->pdialcount = 0;
- get_user(j,(int *)data);
+ spin_unlock_irqrestore(&chan->lock, flags);
if (chan->span->flags & ZT_FLAG_RBS) {
switch (j) {
case ZT_ONHOOK: