diff options
Diffstat (limited to 'drivers/isdn/hardware/mISDN/mISDNipac.c')
-rw-r--r-- | drivers/isdn/hardware/mISDN/mISDNipac.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/drivers/isdn/hardware/mISDN/mISDNipac.c b/drivers/isdn/hardware/mISDN/mISDNipac.c index 92d4a78bc0a5..6c044d55536b 100644 --- a/drivers/isdn/hardware/mISDN/mISDNipac.c +++ b/drivers/isdn/hardware/mISDN/mISDNipac.c | |||
@@ -1420,15 +1420,10 @@ hscx_bctrl(struct mISDNchannel *ch, u32 cmd, void *arg) | |||
1420 | switch (cmd) { | 1420 | switch (cmd) { |
1421 | case CLOSE_CHANNEL: | 1421 | case CLOSE_CHANNEL: |
1422 | test_and_clear_bit(FLG_OPEN, &bch->Flags); | 1422 | test_and_clear_bit(FLG_OPEN, &bch->Flags); |
1423 | if (test_bit(FLG_ACTIVE, &bch->Flags)) { | 1423 | spin_lock_irqsave(hx->ip->hwlock, flags); |
1424 | spin_lock_irqsave(hx->ip->hwlock, flags); | 1424 | mISDN_freebchannel(bch); |
1425 | mISDN_freebchannel(bch); | 1425 | hscx_mode(hx, ISDN_P_NONE); |
1426 | hscx_mode(hx, ISDN_P_NONE); | 1426 | spin_unlock_irqrestore(hx->ip->hwlock, flags); |
1427 | spin_unlock_irqrestore(hx->ip->hwlock, flags); | ||
1428 | } else { | ||
1429 | skb_queue_purge(&bch->rqueue); | ||
1430 | bch->rcount = 0; | ||
1431 | } | ||
1432 | ch->protocol = ISDN_P_NONE; | 1427 | ch->protocol = ISDN_P_NONE; |
1433 | ch->peer = NULL; | 1428 | ch->peer = NULL; |
1434 | module_put(hx->ip->owner); | 1429 | module_put(hx->ip->owner); |