Add memory barrier to fix atomic_read of pending value. Signed-off-by: Milan Broz <mbroz@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
@@ -1410,6 +1410,7 @@ int dm_suspend(struct mapped_device *md, unsigned suspend_flags)
while (1) {
set_current_state(TASK_INTERRUPTIBLE);
+ smp_mb();
if (!atomic_read(&md->pending) || signal_pending(current))
break;