Joe Thornber 10f1d5d111 dm io: fix a race condition in the wake up code for sync_io
There's a race condition between the atomic_dec_and_test(&io->count)
in dec_count() and the waking of the sync_io() thread.  If the thread
is spuriously woken immediately after the decrement it may exit,
making the on stack io struct invalid, yet the dec_count could still
be using it.

Fix this race by using a completion in sync_io() and dec_count().

Reported-by: Minfei Huang <huangminfei@ucloud.cn>
Signed-off-by: Joe Thornber <thornber@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Acked-by: Mikulas Patocka <mpatocka@redhat.com>
Cc: stable@vger.kernel.org
2014-07-10 16:44:14 -04:00
..
2014-06-23 16:47:44 -07:00
2014-06-04 09:08:25 -07:00
2014-06-17 14:28:04 +02:00
2014-06-26 13:34:15 +01:00
2014-06-25 12:19:01 -07:00
2014-06-17 15:43:48 -07:00
2014-06-11 14:06:55 -07:00
2014-06-06 11:44:09 -07:00
2014-06-26 10:48:23 +01:00
2014-06-25 12:19:01 -07:00
2014-06-23 09:22:48 +03:00