Showing error 572

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: drivers/isdn/hardware/mISDN/hfcmulti.c
Line in file: 894
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:19:59 UTC


Source:

 864#ifdef TXADJ
 865        skb = _alloc_mISDN_skb(PH_CONTROL_IND, HFC_VOL_CHANGE_TX,
 866                sizeof(int), &txadj, GFP_ATOMIC);
 867        if (skb)
 868                recv_Bchannel_skb(bch, skb);
 869#endif
 870
 871        timeslot = ((ch/4)*8) + ((ch%4)*4) + 1;
 872        unit = ch % 4;
 873
 874        printk(KERN_NOTICE "vpm_echocan_off called on timeslot %d\n",
 875            timeslot);
 876        /* FILLME */
 877        vpm_out(hc, unit, timeslot, 0x01);
 878}
 879
 880
 881/*
 882 * Speech Design resync feature
 883 * NOTE: This is called sometimes outside interrupt handler.
 884 * We must lock irqsave, so no other interrupt (other card) will occurr!
 885 * Also multiple interrupts may nest, so must lock each access (lists, card)!
 886 */
 887static inline void
 888hfcmulti_resync(struct hfc_multi *locked, struct hfc_multi *newmaster, int rm)
 889{
 890        struct hfc_multi *hc, *next, *pcmmaster = 0;
 891        u_int *plx_acc_32, pv;
 892        u_long flags;
 893
 894        spin_lock_irqsave(&HFClock, flags);
 895        spin_lock(&plx_lock); /* must be locked inside other locks */
 896
 897        if (debug & DEBUG_HFCMULTI_PLXSD)
 898                printk(KERN_DEBUG "%s: RESYNC(syncmaster=0x%p)\n",
 899                        __func__, syncmaster);
 900
 901        /* select new master */
 902        if (newmaster) {
 903                if (debug & DEBUG_HFCMULTI_PLXSD)
 904                        printk(KERN_DEBUG "using provided controller\n");
Show full sources