greybus: bootrom: Skip setting timeout in failure path of size request
authorViresh Kumar <viresh.kumar@linaro.org>
Fri, 22 Jul 2016 21:13:40 +0000 (14:13 -0700)
committerGreg Kroah-Hartman <gregkh@google.com>
Fri, 22 Jul 2016 22:25:18 +0000 (15:25 -0700)
The currently set value of next_request_type in the error path of
gb_bootrom_firmware_size_request() is not correct, as it should have
been NEXT_REQ_FIRMWARE_SIZE for the failure case (as we should be
waiting for another similar request).

But, if an error occurs in gb_bootrom_firmware_size_request(), then the
ES3 bootrom will never be able to recover from it and send another
request. And so there is no point waiting for another request and timing
out.

Skip doing that in error path.

Reported-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/bootrom.c

index 309e0a7..d16f13e 100644 (file)
@@ -223,9 +223,11 @@ unlock:
        mutex_unlock(&bootrom->mutex);
 
 queue_work:
-       /* Refresh timeout */
-       gb_bootrom_set_timeout(bootrom, NEXT_REQ_GET_FIRMWARE,
-                              NEXT_REQ_TIMEOUT_MS);
+       if (!ret) {
+               /* Refresh timeout */
+               gb_bootrom_set_timeout(bootrom, NEXT_REQ_GET_FIRMWARE,
+                                      NEXT_REQ_TIMEOUT_MS);
+       }
 
        return ret;
 }