aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2008-01-02 00:58:02 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:00:31 -0500
commit9a429c4983deae020f1e757ecc8f547b6d4e2f2b (patch)
tree172e27a5866e182b902cd77506df1755aafadb60 /net/ipv6
parentb950dfcf504842a0f2bb142a33ef938f1c00d300 (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.c2
-rw-r--r--net/ipv6/ip6_flowlabel.c2
-rw-r--r--net/ipv6/mcast.c4
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
506static void *ac6_seq_start(struct seq_file *seq, loff_t *pos) 506static 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
520static void ac6_seq_stop(struct seq_file *seq, void *v) 521static 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
631static void *ip6fl_seq_start(struct seq_file *seq, loff_t *pos) 631static 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
649static void ip6fl_seq_stop(struct seq_file *seq, void *v) 650static 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
2375static void *igmp6_mc_seq_start(struct seq_file *seq, loff_t *pos) 2375static 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
2389static void igmp6_mc_seq_stop(struct seq_file *seq, void *v) 2390static 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
2518static void *igmp6_mcf_seq_start(struct seq_file *seq, loff_t *pos) 2520static 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
2535static void igmp6_mcf_seq_stop(struct seq_file *seq, void *v) 2538static 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)) {