diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2008-01-02 00:58:02 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:00:31 -0500 |
commit | 9a429c4983deae020f1e757ecc8f547b6d4e2f2b (patch) | |
tree | 172e27a5866e182b902cd77506df1755aafadb60 /net/ipv6 | |
parent | b950dfcf504842a0f2bb142a33ef938f1c00d300 (diff) |
[NET]: Add some acquires/releases sparse annotations.
Add __acquires() and __releases() annotations to suppress some sparse
warnings.
example of warnings :
net/ipv4/udp.c:1555:14: warning: context imbalance in 'udp_seq_start' - wrong
count at exit
net/ipv4/udp.c:1571:13: warning: context imbalance in 'udp_seq_stop' -
unexpected unlock
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/anycast.c | 2 | ||||
-rw-r--r-- | net/ipv6/ip6_flowlabel.c | 2 | ||||
-rw-r--r-- | net/ipv6/mcast.c | 4 |
3 files changed, 8 insertions, 0 deletions
diff --git a/net/ipv6/anycast.c b/net/ipv6/anycast.c index f915c4df9820..5c4190060e75 100644 --- a/net/ipv6/anycast.c +++ b/net/ipv6/anycast.c | |||
@@ -504,6 +504,7 @@ static struct ifacaddr6 *ac6_get_idx(struct seq_file *seq, loff_t pos) | |||
504 | } | 504 | } |
505 | 505 | ||
506 | static void *ac6_seq_start(struct seq_file *seq, loff_t *pos) | 506 | static void *ac6_seq_start(struct seq_file *seq, loff_t *pos) |
507 | __acquires(dev_base_lock) | ||
507 | { | 508 | { |
508 | read_lock(&dev_base_lock); | 509 | read_lock(&dev_base_lock); |
509 | return ac6_get_idx(seq, *pos); | 510 | return ac6_get_idx(seq, *pos); |
@@ -518,6 +519,7 @@ static void *ac6_seq_next(struct seq_file *seq, void *v, loff_t *pos) | |||
518 | } | 519 | } |
519 | 520 | ||
520 | static void ac6_seq_stop(struct seq_file *seq, void *v) | 521 | static void ac6_seq_stop(struct seq_file *seq, void *v) |
522 | __releases(dev_base_lock) | ||
521 | { | 523 | { |
522 | struct ac6_iter_state *state = ac6_seq_private(seq); | 524 | struct ac6_iter_state *state = ac6_seq_private(seq); |
523 | if (likely(state->idev != NULL)) { | 525 | if (likely(state->idev != NULL)) { |
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index d0babea89819..2b7d9ee98832 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c | |||
@@ -629,6 +629,7 @@ static struct ip6_flowlabel *ip6fl_get_idx(struct seq_file *seq, loff_t pos) | |||
629 | } | 629 | } |
630 | 630 | ||
631 | static void *ip6fl_seq_start(struct seq_file *seq, loff_t *pos) | 631 | static void *ip6fl_seq_start(struct seq_file *seq, loff_t *pos) |
632 | __acquires(ip6_fl_lock) | ||
632 | { | 633 | { |
633 | read_lock_bh(&ip6_fl_lock); | 634 | read_lock_bh(&ip6_fl_lock); |
634 | return *pos ? ip6fl_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; | 635 | return *pos ? ip6fl_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; |
@@ -647,6 +648,7 @@ static void *ip6fl_seq_next(struct seq_file *seq, void *v, loff_t *pos) | |||
647 | } | 648 | } |
648 | 649 | ||
649 | static void ip6fl_seq_stop(struct seq_file *seq, void *v) | 650 | static void ip6fl_seq_stop(struct seq_file *seq, void *v) |
651 | __releases(ip6_fl_lock) | ||
650 | { | 652 | { |
651 | read_unlock_bh(&ip6_fl_lock); | 653 | read_unlock_bh(&ip6_fl_lock); |
652 | } | 654 | } |
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 82b12940c2a0..ab228d1ea114 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
@@ -2373,6 +2373,7 @@ static struct ifmcaddr6 *igmp6_mc_get_idx(struct seq_file *seq, loff_t pos) | |||
2373 | } | 2373 | } |
2374 | 2374 | ||
2375 | static void *igmp6_mc_seq_start(struct seq_file *seq, loff_t *pos) | 2375 | static void *igmp6_mc_seq_start(struct seq_file *seq, loff_t *pos) |
2376 | __acquires(dev_base_lock) | ||
2376 | { | 2377 | { |
2377 | read_lock(&dev_base_lock); | 2378 | read_lock(&dev_base_lock); |
2378 | return igmp6_mc_get_idx(seq, *pos); | 2379 | return igmp6_mc_get_idx(seq, *pos); |
@@ -2387,6 +2388,7 @@ static void *igmp6_mc_seq_next(struct seq_file *seq, void *v, loff_t *pos) | |||
2387 | } | 2388 | } |
2388 | 2389 | ||
2389 | static void igmp6_mc_seq_stop(struct seq_file *seq, void *v) | 2390 | static void igmp6_mc_seq_stop(struct seq_file *seq, void *v) |
2391 | __releases(dev_base_lock) | ||
2390 | { | 2392 | { |
2391 | struct igmp6_mc_iter_state *state = igmp6_mc_seq_private(seq); | 2393 | struct igmp6_mc_iter_state *state = igmp6_mc_seq_private(seq); |
2392 | if (likely(state->idev != NULL)) { | 2394 | if (likely(state->idev != NULL)) { |
@@ -2516,6 +2518,7 @@ static struct ip6_sf_list *igmp6_mcf_get_idx(struct seq_file *seq, loff_t pos) | |||
2516 | } | 2518 | } |
2517 | 2519 | ||
2518 | static void *igmp6_mcf_seq_start(struct seq_file *seq, loff_t *pos) | 2520 | static void *igmp6_mcf_seq_start(struct seq_file *seq, loff_t *pos) |
2521 | __acquires(dev_base_lock) | ||
2519 | { | 2522 | { |
2520 | read_lock(&dev_base_lock); | 2523 | read_lock(&dev_base_lock); |
2521 | return *pos ? igmp6_mcf_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; | 2524 | return *pos ? igmp6_mcf_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; |
@@ -2533,6 +2536,7 @@ static void *igmp6_mcf_seq_next(struct seq_file *seq, void *v, loff_t *pos) | |||
2533 | } | 2536 | } |
2534 | 2537 | ||
2535 | static void igmp6_mcf_seq_stop(struct seq_file *seq, void *v) | 2538 | static void igmp6_mcf_seq_stop(struct seq_file *seq, void *v) |
2539 | __releases(dev_base_lock) | ||
2536 | { | 2540 | { |
2537 | struct igmp6_mcf_iter_state *state = igmp6_mcf_seq_private(seq); | 2541 | struct igmp6_mcf_iter_state *state = igmp6_mcf_seq_private(seq); |
2538 | if (likely(state->im != NULL)) { | 2542 | if (likely(state->im != NULL)) { |