Showing error 1692

User: Jiri Slaby
Error type: Double Lock
Error type description: Some lock is locked twice unintentionally in a sequence
File location: drivers/net/ns83820.c
Line in file: 774
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 14:01:52 UTC


Source:

 744
 745        dprintk("ns83820_setup_rx(%p)\n", ndev);
 746
 747        dev->rx_info.idle = 1;
 748        dev->rx_info.next_rx = 0;
 749        dev->rx_info.next_rx_desc = dev->rx_info.descs;
 750        dev->rx_info.next_empty = 0;
 751
 752        for (i=0; i<NR_RX_DESC; i++)
 753                clear_rx_desc(dev, i);
 754
 755        writel(0, dev->base + RXDP_HI);
 756        writel(dev->rx_info.phy_descs, dev->base + RXDP);
 757
 758        ret = rx_refill(ndev, GFP_KERNEL);
 759        if (!ret) {
 760                dprintk("starting receiver\n");
 761                /* prevent the interrupt handler from stomping on us */
 762                spin_lock_irq(&dev->rx_info.lock);
 763
 764                writel(0x0001, dev->base + CCSR);
 765                writel(0, dev->base + RFCR);
 766                writel(0x7fc00000, dev->base + RFCR);
 767                writel(0xffc00000, dev->base + RFCR);
 768
 769                dev->rx_info.up = 1;
 770
 771                phy_intr(ndev);
 772
 773                /* Okay, let it rip */
 774                spin_lock_irq(&dev->misc_lock);
 775                dev->IMR_cache |= ISR_PHY;
 776                dev->IMR_cache |= ISR_RXRCMP;
 777                //dev->IMR_cache |= ISR_RXERR;
 778                //dev->IMR_cache |= ISR_RXOK;
 779                dev->IMR_cache |= ISR_RXORN;
 780                dev->IMR_cache |= ISR_RXSOVR;
 781                dev->IMR_cache |= ISR_RXDESC;
 782                dev->IMR_cache |= ISR_RXIDLE;
 783                dev->IMR_cache |= ISR_TXDESC;
 784                dev->IMR_cache |= ISR_TXIDLE;
Show full sources