Re: [PATCH v5 2/9] IB/core: Replace semaphore sm_sem with an atomic wait

From: Arnd Bergmann
Date: Mon Nov 21 2016 - 11:53:29 EST


On Monday, November 21, 2016 7:57:53 AM CET Linus Torvalds wrote:
> Don't do this.
>
> Never ever do your own locking primitives. You will get the memory ordering
> wrong. And even if you get it right, why do it?
>
> If you want to get rid of semaphores, and replace them with a mutex, that's
> OK. But don't replace them with something more complex like an open coded
> waiting model.

I think a mutex would't work here, since fops->open() and fops->close()
are not called from the same context and lockdep will complain
about that.

Version of the series had replaced the semaphore with a completion
here, which worked correctly, but one reviewer suggested using
the wait_event() instead since it's confusing to have a completion
starting out in 'completed' state.

Arnd