Showing error 1079

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


Source:

1827
1828                for (iov = he_vcc->iov_head;
1829                                iov < he_vcc->iov_tail; ++iov) {
1830                        if (iov->iov_base & RBP_SMALLBUF)
1831                                rbp = &he_dev->rbps_base[RBP_INDEX(iov->iov_base)];
1832                        else
1833                                rbp = &he_dev->rbpl_base[RBP_INDEX(iov->iov_base)];
1834
1835                        rbp->status &= ~RBP_LOANED;
1836                }
1837
1838                he_vcc->iov_tail = he_vcc->iov_head;
1839                he_vcc->pdu_len = 0;
1840
1841next_rbrq_entry:
1842                he_dev->rbrq_head = (struct he_rbrq *)
1843                                ((unsigned long) he_dev->rbrq_base |
1844                                        RBRQ_MASK(++he_dev->rbrq_head));
1845
1846        }
1847        read_unlock(&vcc_sklist_lock);
1848
1849        if (updated) {
1850                if (updated > he_dev->rbrq_peak)
1851                        he_dev->rbrq_peak = updated;
1852
1853                he_writel(he_dev, RBRQ_MASK(he_dev->rbrq_head),
1854                                                G0_RBRQ_H + (group * 16));
1855        }
1856
1857        return pdus_assembled;
1858}
1859
1860static void
1861he_service_tbrq(struct he_dev *he_dev, int group)
1862{
1863        struct he_tbrq *tbrq_tail = (struct he_tbrq *)
1864                                ((unsigned long)he_dev->tbrq_base |
1865                                        he_dev->hsp->group[group].tbrq_tail);
1866        struct he_tpd *tpd;
1867        int slot, updated = 0;
Show full sources