]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
greybus: timesync: Ensure parallel synchronous calls succeed
authorBryan O'Donoghue <bryan.odonoghue@linaro.org>
Tue, 2 Aug 2016 12:18:28 +0000 (13:18 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 3 Aug 2016 08:59:13 +0000 (10:59 +0200)
The guard for initiating a new synchronization operation should allow for
that resync to happen in every single state except for INVALID. This patch
fixes by ensuring the guard does just that. With local testing it was
possible to break a sync to a Module. This hasn't been observed in a buglog
but should be fixed anyway.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Acked-by: David Lin <dtwlin@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/timesync.c

index 744ae0c9d586d6b97fb026323c798600cfacf95e..561bbea9ae17ee8798f51e79fe27d202e5d2b18b 100644 (file)
@@ -806,8 +806,7 @@ static int gb_timesync_schedule(struct gb_timesync_svc *timesync_svc, int state)
                return -EINVAL;
 
        mutex_lock(&timesync_svc->mutex);
-       if (timesync_svc->state ==  GB_TIMESYNC_STATE_INACTIVE ||
-           timesync_svc->state == GB_TIMESYNC_STATE_ACTIVE) {
+       if (timesync_svc->state !=  GB_TIMESYNC_STATE_INVALID) {
                gb_timesync_set_state_atomic(timesync_svc, state);
        } else {
                ret = -ENODEV;