Messages in this thread | | | Date | Thu, 24 Sep 2015 12:11:42 -0700 (PDT) | Subject | Re: [PATCH v2] netlink: Replace rhash_portid with bound | From | David Miller <> |
| |
From: Herbert Xu <herbert@gondor.apana.org.au> Date: Tue, 22 Sep 2015 11:38:56 +0800
> The commit 1f770c0a09da855a2b51af6d19de97fb955eca85 ("netlink: > Fix autobind race condition that leads to zero port ID") created > some new races that can occur due to inconcsistencies between the > two port IDs. > > Tejun is right that a barrier is unavoidable. Therefore I am > reverting to the original patch that used a boolean to indicate > that a user netlink socket has been bound. > > Barriers have been added where necessary to ensure that a valid > portid and the hashed socket is visible. > > I have also changed netlink_insert to only return EBUSY if the > socket is bound to a portid different to the requested one. This > combined with only reading nlk->bound once in netlink_bind fixes > a race where two threads that bind the socket at the same time > with different port IDs may both succeed. > > Fixes: 1f770c0a09da ("netlink: Fix autobind race condition that leads to zero port ID") > Reported-by: Tejun Heo <tj@kernel.org> > Reported-by: Linus Torvalds <torvalds@linux-foundation.org> > Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
I've decided to apply this and queue it up for -stable.
Thanks everyone.
| |