Skip to content
Commit 1f770c0a authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller
Browse files

netlink: Fix autobind race condition that leads to zero port ID

The commit c0bb07df ("netlink:
Reset portid after netlink_insert failure") introduced a race
condition where if two threads try to autobind the same socket
one of them may end up with a zero port ID.  This led to kernel
deadlocks that were observed by multiple people.

This patch reverts that commit and instead fixes it by introducing
a separte rhash_portid variable so that the real portid is only set
after the socket has been successfully hashed.

Fixes: c0bb07df

 ("netlink: Reset portid after netlink_insert failure")
Reported-by: default avatarTejun Heo <tj@kernel.org>
Reported-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3ea79249
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment