struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
        struct drm_device *dev = obj->dev;
        bool write = !!(op & ETNA_PREP_WRITE);
-       int ret;
-
-       if (op & ETNA_PREP_NOSYNC) {
-               if (!reservation_object_test_signaled_rcu(etnaviv_obj->resv,
-                                                         write))
-                       return -EBUSY;
-       } else {
-               unsigned long remain = etnaviv_timeout_to_jiffies(timeout);
-
-               ret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
-                                                         write, true, remain);
-               if (ret <= 0)
-                       return ret == 0 ? -ETIMEDOUT : ret;
-       }
+       unsigned long remain =
+               op & ETNA_PREP_NOSYNC ? 0 : etnaviv_timeout_to_jiffies(timeout);
+       long lret;
+
+       lret = reservation_object_wait_timeout_rcu(etnaviv_obj->resv,
+                                                  write, true, remain);
+       if (lret < 0)
+               return lret;
+       else if (lret == 0)
+               return remain == 0 ? -EBUSY : -ETIMEDOUT;
 
        if (etnaviv_obj->flags & ETNA_BO_CACHED) {
                if (!etnaviv_obj->sgt) {