Revision 85de7fac3990cf0c0736edc83856add2e648c76a authored by Marek Vasut on 21 November 2012, 05:19:06 UTC, committed by Wolfram Sang on 21 January 2013, 15:26:29 UTC
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_COMPLETION() call only reinits the flag.

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_i2c_xfer_msg(), since whole this section is protected by mutex in I2C core.
This by no means allows this issue to exit though.

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
1 parent 7d1f9ae
History
File Mode Size
Kconfig -rw-r--r-- 898 bytes
Makefile -rw-r--r-- 416 bytes
afs.h -rw-r--r-- 6.0 KB
afs_cm.h -rw-r--r-- 1.2 KB
afs_fs.h -rw-r--r-- 2.3 KB
afs_vl.h -rw-r--r-- 3.6 KB
cache.c -rw-r--r-- 10.8 KB
callback.c -rw-r--r-- 11.3 KB
cell.c -rw-r--r-- 10.3 KB
cmservice.c -rw-r--r-- 13.2 KB
dir.c -rw-r--r-- 27.1 KB
file.c -rw-r--r-- 8.6 KB
flock.c -rw-r--r-- 15.8 KB
fsclient.c -rw-r--r-- 44.1 KB
inode.c -rw-r--r-- 12.2 KB
internal.h -rw-r--r-- 31.1 KB
main.c -rw-r--r-- 4.4 KB
misc.c -rw-r--r-- 2.3 KB
mntpt.c -rw-r--r-- 6.7 KB
netdevices.c -rw-r--r-- 1.5 KB
proc.c -rw-r--r-- 17.0 KB
rxrpc.c -rw-r--r-- 20.2 KB
security.c -rw-r--r-- 8.9 KB
server.c -rw-r--r-- 7.7 KB
super.c -rw-r--r-- 12.4 KB
vlclient.c -rw-r--r-- 5.4 KB
vlocation.c -rw-r--r-- 17.5 KB
vnode.c -rw-r--r-- 24.1 KB
volume.c -rw-r--r-- 9.9 KB
write.c -rw-r--r-- 18.1 KB

back to top