Showing error 1493

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


Source:

 134        return NULL;
 135}
 136
 137
 138
 139
 140/*
 141 *        The /proc interfaces to multicast routing /proc/ip6_mr_cache /proc/ip6_mr_vif
 142 */
 143
 144struct ipmr_vif_iter {
 145        int ct;
 146};
 147
 148static struct mif_device *ip6mr_vif_seq_idx(struct ipmr_vif_iter *iter,
 149                                            loff_t pos)
 150{
 151        for (iter->ct = 0; iter->ct < maxvif; ++iter->ct) {
 152                if (!MIF_EXISTS(iter->ct))
 153                        continue;
 154                if (pos-- == 0)
 155                        return &vif6_table[iter->ct];
 156        }
 157        return NULL;
 158}
 159
 160static void *ip6mr_vif_seq_start(struct seq_file *seq, loff_t *pos)
 161        __acquires(mrt_lock)
 162{
 163        read_lock(&mrt_lock);
 164        return (*pos ? ip6mr_vif_seq_idx(seq->private, *pos - 1)
 165                : SEQ_START_TOKEN);
 166}
 167
 168static void *ip6mr_vif_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 169{
 170        struct ipmr_vif_iter *iter = seq->private;
 171
 172        ++*pos;
 173        if (v == SEQ_START_TOKEN)
 174                return ip6mr_vif_seq_idx(iter, 0);
Show full sources