OSDN Git Service

drm/qxl: Handle all errors in qxl_surface_evict
authorFrediano Ziglio <fziglio@redhat.com>
Wed, 3 Jun 2015 11:09:13 +0000 (12:09 +0100)
committerDave Airlie <airlied@redhat.com>
Fri, 5 Jun 2015 01:00:49 +0000 (11:00 +1000)
Only EBUSY error was handled. This could cause code to believe
reserve was successful while it failed.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/qxl/qxl_cmd.c

index f33251d..3d270a4 100644 (file)
@@ -618,8 +618,8 @@ static int qxl_reap_surf(struct qxl_device *qdev, struct qxl_bo *surf, bool stal
        int ret;
 
        ret = qxl_bo_reserve(surf, false);
-       if (ret == -EBUSY)
-               return -EBUSY;
+       if (ret)
+               return ret;
 
        if (stall)
                mutex_unlock(&qdev->surf_evict_mutex);
@@ -628,9 +628,9 @@ static int qxl_reap_surf(struct qxl_device *qdev, struct qxl_bo *surf, bool stal
 
        if (stall)
                mutex_lock(&qdev->surf_evict_mutex);
-       if (ret == -EBUSY) {
+       if (ret) {
                qxl_bo_unreserve(surf);
-               return -EBUSY;
+               return ret;
        }
 
        qxl_surface_evict_locked(qdev, surf, true);