summaryrefslogtreecommitdiffstats
path: root/net/irda/qos.c
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2007-10-18 05:18:56 -0700
committerDavid S. Miller <davem@davemloft.net>2007-10-18 05:18:56 -0700
commit78c2e50253569e62caa4a61fc1cc5a0158edec43 (patch)
tree07567a10517b1cf1ce297c1ecf4ce7c617856331 /net/irda/qos.c
parentbd0bf57700cb0eaa92f3d2ee040a69743cdd99d0 (diff)
[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 <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/irda/qos.c')
0 files changed, 0 insertions, 0 deletions