Showing error 991

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/net/forcedeth.c
Line in file: 4617
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-03-02 21:35:18 UTC


Source:

4587        np->tx_skb = (struct nv_skb_map*)tx_skbuff;
4588        np->ring_addr = ring_addr;
4589
4590        memset(np->rx_skb, 0, sizeof(struct nv_skb_map) * np->rx_ring_size);
4591        memset(np->tx_skb, 0, sizeof(struct nv_skb_map) * np->tx_ring_size);
4592
4593        if (netif_running(dev)) {
4594                /* reinit driver view of the queues */
4595                set_bufsize(dev);
4596                if (nv_init_ring(dev)) {
4597                        if (!np->in_shutdown)
4598                                mod_timer(&np->oom_kick, jiffies + OOM_REFILL);
4599                }
4600
4601                /* reinit nic view of the queues */
4602                writel(np->rx_buf_sz, base + NvRegOffloadConfig);
4603                setup_hw_rings(dev, NV_SETUP_RX_RING | NV_SETUP_TX_RING);
4604                writel( ((np->rx_ring_size-1) << NVREG_RINGSZ_RXSHIFT) + ((np->tx_ring_size-1) << NVREG_RINGSZ_TXSHIFT),
4605                        base + NvRegRingSizes);
4606                pci_push(base);
4607                writel(NVREG_TXRXCTL_KICK|np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl);
4608                pci_push(base);
4609
4610                /* restart engines */
4611                nv_start_rxtx(dev);
4612                spin_unlock(&np->lock);
4613                netif_addr_unlock(dev);
4614                netif_tx_unlock_bh(dev);
4615                nv_enable_irq(dev);
4616        }
4617        return 0;
4618exit:
4619        return -ENOMEM;
4620}
4621
4622static void nv_get_pauseparam(struct net_device *dev, struct ethtool_pauseparam* pause)
4623{
4624        struct fe_priv *np = netdev_priv(dev);
4625
4626        pause->autoneg = (np->pause_flags & NV_PAUSEFRAME_AUTONEG) != 0;
4627        pause->rx_pause = (np->pause_flags & NV_PAUSEFRAME_RX_ENABLE) != 0;
Show full sources