[PATCH V2] mxs/spi: Fix misuse of init_completion
Marek Vasut
marek.vasut at gmail.com
Thu Aug 23 22:54:40 EDT 2012
Dear Chris Ball,
> Hi Marek,
>
> On Thu, Aug 23 2012, Marek Vasut wrote:
> > The init_completion() call does reinit not only the variable carrying
> > the flag that the completion finished, but also initialized the
> > waitqueue associated with the completion. On the contrary, the
> > INIT_WAITQUEUE() call only reinits the flag.
Darn, it's INIT_COMPLETION() of course.
> > In case there was anything still stuck in the waitqueue, subsequent call
> > to init_completion() would be able to create possible race condition.
> > This patch uses the proper function and moves init_completion() into
> > .probe() call of the driver, to be issued only once.
> >
> > Note that such scenario is impossible, since two threads can never enter
> > the mxs_spi_txrx_dma(), since whole this section is protected by mutex
> > in SPI core. This by no means allows this issue to exit though.
> >
> > Signed-off-by: Marek Vasut <marex at denx.de>
>
> Thanks for writing that up -- I appreciate seeing the explanation of the
> problems this could have caused.
You're very welcome, I was really lazy, sorry about that and thanks for pushing
me ;-) I hope someone might eventually even find this explanation useful.
> - Chris.
Best regards,
Marek Vasut
More information about the linux-arm-kernel
mailing list