Showing error 1468

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


Source:

2344                                break;
2345                }
2346        }
2347        return *pos ? NULL : pn;
2348}
2349
2350static void *neigh_get_idx_any(struct seq_file *seq, loff_t *pos)
2351{
2352        struct neigh_seq_state *state = seq->private;
2353        void *rc;
2354        loff_t idxpos = *pos;
2355
2356        rc = neigh_get_idx(seq, &idxpos);
2357        if (!rc && !(state->flags & NEIGH_SEQ_NEIGH_ONLY))
2358                rc = pneigh_get_idx(seq, &idxpos);
2359
2360        return rc;
2361}
2362
2363void *neigh_seq_start(struct seq_file *seq, loff_t *pos, struct neigh_table *tbl, unsigned int neigh_seq_flags)
2364        __acquires(tbl->lock)
2365{
2366        struct neigh_seq_state *state = seq->private;
2367
2368        state->tbl = tbl;
2369        state->bucket = 0;
2370        state->flags = (neigh_seq_flags & ~NEIGH_SEQ_IS_PNEIGH);
2371
2372        read_lock_bh(&tbl->lock);
2373
2374        return *pos ? neigh_get_idx_any(seq, pos) : SEQ_START_TOKEN;
2375}
2376EXPORT_SYMBOL(neigh_seq_start);
2377
2378void *neigh_seq_next(struct seq_file *seq, void *v, loff_t *pos)
2379{
2380        struct neigh_seq_state *state;
2381        void *rc;
2382
2383        if (v == SEQ_START_TOKEN) {
2384                rc = neigh_get_first(seq);
Show full sources