Showing error 993

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: 2561
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-03-02 21:35:18 UTC


Source:

2531                psf = state->im->mca_sources;
2532        }
2533out:
2534        return psf;
2535}
2536
2537static struct ip6_sf_list *igmp6_mcf_get_idx(struct seq_file *seq, loff_t pos)
2538{
2539        struct ip6_sf_list *psf = igmp6_mcf_get_first(seq);
2540        if (psf)
2541                while (pos && (psf = igmp6_mcf_get_next(seq, psf)) != NULL)
2542                        --pos;
2543        return pos ? NULL : psf;
2544}
2545
2546static void *igmp6_mcf_seq_start(struct seq_file *seq, loff_t *pos)
2547        __acquires(dev_base_lock)
2548{
2549        read_lock(&dev_base_lock);
2550        return *pos ? igmp6_mcf_get_idx(seq, *pos - 1) : SEQ_START_TOKEN;
2551}
2552
2553static void *igmp6_mcf_seq_next(struct seq_file *seq, void *v, loff_t *pos)
2554{
2555        struct ip6_sf_list *psf;
2556        if (v == SEQ_START_TOKEN)
2557                psf = igmp6_mcf_get_first(seq);
2558        else
2559                psf = igmp6_mcf_get_next(seq, v);
2560        ++*pos;
2561        return psf;
2562}
2563
2564static void igmp6_mcf_seq_stop(struct seq_file *seq, void *v)
2565        __releases(dev_base_lock)
2566{
2567        struct igmp6_mcf_iter_state *state = igmp6_mcf_seq_private(seq);
2568        if (likely(state->im != NULL)) {
2569                spin_unlock_bh(&state->im->mca_lock);
2570                state->im = NULL;
2571        }
Show full sources