Browse Source

drm/radeon/kms: don't allow ERESTART to hit userspace.

the pre-r600 fence code returns ebusy if we get hit by a signal
so we should continue to do that.

Signed-off-by: Dave Airlie <airlied@redhat.com>
Dave Airlie 15 years ago
parent
commit
c746e205f2
1 changed files with 7 additions and 3 deletions
  1. 7 3
      drivers/gpu/drm/radeon/radeon_fence.c

+ 7 - 3
drivers/gpu/drm/radeon/radeon_fence.c

@@ -199,7 +199,7 @@ int r600_fence_wait(struct radeon_fence *fence,  bool intr, bool lazy)
 			schedule_timeout(1);
 
 		if (intr && signal_pending(current)) {
-			ret = -ERESTART;
+			ret = -ERESTARTSYS;
 			break;
 		}
 	}
@@ -225,8 +225,12 @@ int radeon_fence_wait(struct radeon_fence *fence, bool intr)
 		return 0;
 	}
 
-	if (rdev->family >= CHIP_R600)
-		return r600_fence_wait(fence, intr, 0);
+	if (rdev->family >= CHIP_R600) {
+		r = r600_fence_wait(fence, intr, 0);
+		if (r == -ERESTARTSYS)
+			return -EBUSY;
+		return r;
+	}
 
 retry:
 	cur_jiffies = jiffies;