Showing error 1480

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: net/ipv4/ipmr.c
Line in file: 1702
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

1672                cache->mfc_flags |= MFC_NOTIFY;
1673        err = ipmr_fill_mroute(skb, cache, rtm);
1674        read_unlock(&mrt_lock);
1675        return err;
1676}
1677
1678#ifdef CONFIG_PROC_FS
1679/*
1680 *        The /proc interfaces to multicast routing /proc/ip_mr_cache /proc/ip_mr_vif
1681 */
1682struct ipmr_vif_iter {
1683        int ct;
1684};
1685
1686static struct vif_device *ipmr_vif_seq_idx(struct ipmr_vif_iter *iter,
1687                                           loff_t pos)
1688{
1689        for (iter->ct = 0; iter->ct < maxvif; ++iter->ct) {
1690                if (!VIF_EXISTS(iter->ct))
1691                        continue;
1692                if (pos-- == 0)
1693                        return &vif_table[iter->ct];
1694        }
1695        return NULL;
1696}
1697
1698static void *ipmr_vif_seq_start(struct seq_file *seq, loff_t *pos)
1699        __acquires(mrt_lock)
1700{
1701        read_lock(&mrt_lock);
1702        return *pos ? ipmr_vif_seq_idx(seq->private, *pos - 1)
1703                : SEQ_START_TOKEN;
1704}
1705
1706static void *ipmr_vif_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1707{
1708        struct ipmr_vif_iter *iter = seq->private;
1709
1710        ++*pos;
1711        if (v == SEQ_START_TOKEN)
1712                return ipmr_vif_seq_idx(iter, 0);
Show full sources