Showing error 1497

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


Source:

2357                        state->idev = idev;
2358                        break;
2359                }
2360                read_unlock_bh(&idev->lock);
2361                in6_dev_put(idev);
2362        }
2363        return im;
2364}
2365
2366static struct ifmcaddr6 *igmp6_mc_get_next(struct seq_file *seq, struct ifmcaddr6 *im)
2367{
2368        struct igmp6_mc_iter_state *state = igmp6_mc_seq_private(seq);
2369
2370        im = im->next;
2371        while (!im) {
2372                if (likely(state->idev != NULL)) {
2373                        read_unlock_bh(&state->idev->lock);
2374                        in6_dev_put(state->idev);
2375                }
2376                state->dev = next_net_device(state->dev);
2377                if (!state->dev) {
2378                        state->idev = NULL;
2379                        break;
2380                }
2381                state->idev = in6_dev_get(state->dev);
2382                if (!state->idev)
2383                        continue;
2384                read_lock_bh(&state->idev->lock);
2385                im = state->idev->mc_list;
2386        }
2387        return im;
2388}
2389
2390static struct ifmcaddr6 *igmp6_mc_get_idx(struct seq_file *seq, loff_t pos)
2391{
2392        struct ifmcaddr6 *im = igmp6_mc_get_first(seq);
2393        if (im)
2394                while (pos && (im = igmp6_mc_get_next(seq, im)) != NULL)
2395                        --pos;
2396        return pos ? NULL : im;
2397}
Show full sources