User: | Jiri Slaby |
Error type: | Leaving function in locked state |
Error type description: | Some lock is not unlocked on all paths of a function, so it is leaked |
File location: | drivers/isdn/hisax/icc.c |
Line in file: | 566 |
Project: | Linux Kernel |
Project version: | 2.6.28 |
Tools: |
Stanse
(1.2)
Undetermined 1 |
Entered: | 2012-03-02 21:35:17 UTC |
536 cs->writeisac(cs, ICC_SPCR, val); 537 cs->writeisac(cs, ICC_ADF1, 0xa); 538 } 539 } else { 540 /* IOM 2 Mode */ 541 cs->writeisac(cs, ICC_SPCR, val); 542 if (val) 543 cs->writeisac(cs, ICC_ADF1, 0x8); 544 else 545 cs->writeisac(cs, ICC_ADF1, 0x0); 546 } 547 spin_unlock_irqrestore(&cs->lock, flags); 548 break; 549 case (HW_DEACTIVATE | RESPONSE): 550 skb_queue_purge(&cs->rq); 551 skb_queue_purge(&cs->sq); 552 if (cs->tx_skb) { 553 dev_kfree_skb_any(cs->tx_skb); 554 cs->tx_skb = NULL; 555 } 556 if (test_and_clear_bit(FLG_DBUSY_TIMER, &cs->HW_Flags)) 557 del_timer(&cs->dbusytimer); 558 if (test_and_clear_bit(FLG_L1_DBUSY, &cs->HW_Flags)) 559 schedule_event(cs, D_CLEARBUSY); 560 break; 561 default: 562 if (cs->debug & L1_DEB_WARN) 563 debugl1(cs, "icc_l1hw unknown %04x", pr); 564 break; 565 } 566} 567 568static void 569setstack_icc(struct PStack *st, struct IsdnCardState *cs) 570{ 571 st->l1.l1hw = ICC_l1hw; 572} 573 574static void 575DC_Close_icc(struct IsdnCardState *cs) { 576 kfree(cs->dc.icc.mon_rx);