From: Arnd Bergmann <a...@arndb.de> Date: Mon, 10 Dec 2018 22:17:20 +0100
> This is one of only two files that initialize a semaphore to a negative > value. We don't really need the two semaphores here at all, but can do > the same thing in more conventional and more effient way, by using a > single waitqueue and an atomic thread counter. > > This gets us a little bit closer to eliminating classic semaphores from > the kernel. It also fixes a corner case where we fail to continue after > one of the threads fails to start up. > > An alternative would be to use a split kthread_create()+wake_up_process() > and completely eliminate the separate synchronization. > > Signed-off-by: Arnd Bergmann <a...@arndb.de> > --- > This is part of a longer, untested, series to remove semaphores > from the kernel, please review as such before applying. This looks fine to me, although it seems kinda weird how the synchronization works in that the N - 1 child threads will be awoken two times, once when child N decrements the count to zero and once when the parent decrements the count to -1 which lets us past the wait_event_interruptibel(). Nevertheless it should work just fine and I have no problems with it. Want me to apply this to net-next? Thanks.