From: Pavel Emelyanov Date: Thu, 18 Oct 2007 12:18:56 +0000 (-0700) Subject: [IPV6]: Fix race in ipv6_flowlabel_opt() when inserting two labels X-Git-Tag: v2.6.24-rc1~294^2~2 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78c2e50253569e62caa4a61fc1cc5a0158edec43;p=pandora-kernel.git [IPV6]: Fix race in ipv6_flowlabel_opt() when inserting two labels In the IPV6_FL_A_GET case the hash is checked for flowlabels with the given label. If it is not found, the lock, protecting the hash, is dropped to be re-get for writing. After this a newly allocated entry is inserted, but no checks are performed to catch a classical SMP race, when the conflicting label may be inserted on another cpu. Use the (currently unused) return value from fl_intern() to return the conflicting entry (if found) and re-check, whether we can reuse it (IPV6_FL_F_EXCL) or return -EEXISTS. Also add the comment, about why not re-lookup the current sock for conflicting flowlabel entry. Signed-off-by: Pavel Emelyanov Signed-off-by: David S. Miller --- Reading git-diff-tree failed