Thread (2 messages) flat view 2 messages, 2 authors, 2012-08-24
DORMANTno replies

[PATCH V2] mxs/spi: Fix misuse of init_completion

From: Marek Vasut <hidden>
Date: 2012-08-24 02:54:40
Also in: linux-spi

Dear Chris Ball,
Hi Marek,

On Thu, Aug 23 2012, Marek Vasut wrote:
quoted
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.
quoted
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@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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help