Showing error 1076

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/pcnet32.c
Line in file: 1140
Project: Linux Kernel
Project version: 2.6.28
Tools: Undetermined 1
Entered: 2012-03-04 17:07:06 UTC


Source:

1110{
1111        int csr5;
1112        struct pcnet32_private *lp = netdev_priv(dev);
1113        struct pcnet32_access *a = &lp->a;
1114        ulong ioaddr = dev->base_addr;
1115        int ticks;
1116
1117        /* really old chips have to be stopped. */
1118        if (lp->chip_version < PCNET32_79C970A)
1119                return 0;
1120
1121        /* set SUSPEND (SPND) - CSR5 bit 0 */
1122        csr5 = a->read_csr(ioaddr, CSR5);
1123        a->write_csr(ioaddr, CSR5, csr5 | CSR5_SUSPEND);
1124
1125        /* poll waiting for bit to be set */
1126        ticks = 0;
1127        while (!(a->read_csr(ioaddr, CSR5) & CSR5_SUSPEND)) {
1128                spin_unlock_irqrestore(&lp->lock, *flags);
1129                if (can_sleep)
1130                        msleep(1);
1131                else
1132                        mdelay(1);
1133                spin_lock_irqsave(&lp->lock, *flags);
1134                ticks++;
1135                if (ticks > 200) {
1136                        if (netif_msg_hw(lp))
1137                                printk(KERN_DEBUG
1138                                       "%s: Error getting into suspend!\n",
1139                                       dev->name);
1140                        return 0;
1141                }
1142        }
1143        return 1;
1144}
1145
1146/*
1147 * process one receive descriptor entry
1148 */
1149
1150static void pcnet32_rx_entry(struct net_device *dev,
Show full sources