summaryrefslogtreecommitdiff
path: root/kernel/zaptel-base.c
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-06-05 20:06:34 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-06-05 20:06:34 +0000
commitcc24db9d88f3fdc07d58917c8e8157cb6a2ae700 (patch)
treeca8f122f3d869c9c4fa6be1e985a30894e595076 /kernel/zaptel-base.c
parent6459cabd68f4d02d7f915fe404d135708ba14ac7 (diff)
Fixes a potential panic in Xorcom Astribanks devices if disconnected
when a userspace program still holds a channel open. Regression from changeset 4250 . git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@4348 5390a7c7-147a-4af0-8ec9-7488f05a26cb
Diffstat (limited to 'kernel/zaptel-base.c')
-rw-r--r--kernel/zaptel-base.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/kernel/zaptel-base.c b/kernel/zaptel-base.c
index 2c6a22e..21fef71 100644
--- a/kernel/zaptel-base.c
+++ b/kernel/zaptel-base.c
@@ -2515,7 +2515,10 @@ static int zt_specchan_release(struct inode *node, struct file *file, int unit)
close_channel(chans[unit]);
if (chans[unit]->span && chans[unit]->span->close)
res = chans[unit]->span->close(chans[unit]);
- clear_bit(ZT_FLAGBIT_OPEN, &chans[unit]->flags);
+
+ /* The channel might be destroyed on close: */
+ if (chans[unit])
+ clear_bit(ZT_FLAGBIT_OPEN, &chans[unit]->flags);
} else
res = -ENXIO;
#ifndef LINUX26