netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/3] Lost locking in fl6_sock_lookup
@ 2007-10-18 11:53 Pavel Emelyanov
  2007-10-18 12:00 ` YOSHIFUJI Hideaki / 吉藤英明
  2007-10-18 12:16 ` David Miller
  0 siblings, 2 replies; 7+ messages in thread
From: Pavel Emelyanov @ 2007-10-18 11:53 UTC (permalink / raw)
  To: David Miller; +Cc: Linux Netdev List, devel

This routine scans the ipv6_fl_list whose update is
protected with the socket lock and the ip6_sk_fl_lock.

Since the socket lock is not taken in the lookup, use
the other one.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

---

diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index 8550df2..f40a086 100644
--- a/net/ipv6/ip6_flowlabel.c
+++ b/net/ipv6/ip6_flowlabel.c
@@ -190,14 +190,17 @@ struct ip6_flowlabel * fl6_sock_lookup(struct sock *sk, __be32 label)
 
 	label &= IPV6_FLOWLABEL_MASK;
 
+	read_lock_bh(&ip6_sk_fl_lock);
 	for (sfl=np->ipv6_fl_list; sfl; sfl = sfl->next) {
 		struct ip6_flowlabel *fl = sfl->fl;
 		if (fl->label == label) {
+			read_unlock_bh(&ip6_sk_fl_lock);
 			fl->lastuse = jiffies;
 			atomic_inc(&fl->users);
 			return fl;
 		}
 	}
+	read_unlock_bh(&ip6_sk_fl_lock);
 	return NULL;
 }
 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2007-10-18 12:33 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-10-18 11:53 [PATCH 2/3] Lost locking in fl6_sock_lookup Pavel Emelyanov
2007-10-18 12:00 ` YOSHIFUJI Hideaki / 吉藤英明
2007-10-18 12:11   ` Pavel Emelyanov
2007-10-18 12:14     ` David Miller
2007-10-18 12:16 ` David Miller
2007-10-18 12:22   ` Pavel Emelyanov
2007-10-18 12:33     ` David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).