patch-2.4.0-test8 linux/drivers/char/drm/r128_dma.c

Next file: linux/drivers/char/drm/r128_drv.c
Previous file: linux/drivers/char/drm/r128_context.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test7/linux/drivers/char/drm/r128_dma.c linux/drivers/char/drm/r128_dma.c
@@ -68,6 +68,7 @@
 	return R128_READ(R128_CLOCK_CNTL_DATA);
 }
 
+#ifdef __i386__
 static void r128_flush_write_combine(void)
 {
 	int xchangeDummy;
@@ -86,6 +87,11 @@
 			 "pop %%ebx ;"
 			 "pop %%eax" : /* no outputs */ :  /* no inputs */ );
 }
+#else
+static void r128_flush_write_combine(void)
+{
+}
+#endif
 
 static void r128_status(drm_device_t *dev)
 {
@@ -211,8 +217,8 @@
         drm_device_t      *dev    = priv->dev;
 	drm_r128_init_t    init;
 
-	copy_from_user_ret(&init, (drm_r128_init_t *)arg, sizeof(init),
-			   -EFAULT);
+	if (copy_from_user(&init, (drm_r128_init_t *)arg, sizeof(init)))
+		return -EFAULT;
 
 	switch (init.func) {
 	case R128_INIT_CCE:
@@ -680,8 +686,8 @@
 		return -EINVAL;
 	}
 
-	copy_from_user_ret(&packet, (drm_r128_packet_t *)arg, sizeof(packet),
-			   -EFAULT);
+	if (copy_from_user(&packet, (drm_r128_packet_t *)arg, sizeof(packet)))
+		return -EFAULT;
 
 	c    = packet.count;
 	size = c * sizeof(*buffer);
@@ -696,7 +702,8 @@
 		}
 
 		if ((buffer = kmalloc(size, 0)) == NULL) return -ENOMEM;
-		copy_from_user_ret(buffer, packet.buffer, size, -EFAULT);
+		if (copy_from_user(buffer, packet.buffer, size))
+			return -EFAULT;
 
 		if (dev_priv->cce_secure)
 			ret = r128_submit_packets_ring_secure(dev, buffer, &c);
@@ -706,7 +713,8 @@
 		c += left;
 	} else {
 		if ((buffer = kmalloc(size, 0)) == NULL) return -ENOMEM;
-		copy_from_user_ret(buffer, packet.buffer, size, -EFAULT);
+		if (copy_from_user(buffer, packet.buffer, size))
+			return -EFAULT;
 
 		if (dev_priv->cce_secure)
 			ret = r128_submit_packets_pio_secure(dev, buffer, &c);
@@ -717,8 +725,8 @@
 	kfree(buffer);
 
 	packet.count = c;
-	copy_to_user_ret((drm_r128_packet_t *)arg, &packet, sizeof(packet),
-			 -EFAULT);
+	if (copy_to_user((drm_r128_packet_t *)arg, &packet, sizeof(packet)))
+		return -EFAULT;
 
 	if (ret)        return ret;
 	else if (c > 0) return -EAGAIN;
@@ -855,14 +863,13 @@
 		buf = r128_freelist_get(dev);
 		if (!buf) break;
 		buf->pid = current->pid;
-		copy_to_user_ret(&v->request_indices[i],
+		if (copy_to_user(&v->request_indices[i],
 				 &buf->idx,
-				 sizeof(buf->idx),
-				 -EFAULT);
-		copy_to_user_ret(&v->request_sizes[i],
+				 sizeof(buf->idx)) ||
+		    copy_to_user(&v->request_sizes[i],
 				 &buf->total,
-				 sizeof(buf->total),
-				 -EFAULT);
+				 sizeof(buf->total)))
+			return -EFAULT;
 		++v->granted_count;
 	}
 	return 0;
@@ -889,7 +896,8 @@
 		return -EINVAL;
 	}
 
-	copy_from_user_ret(&v, (drm_r128_vertex_t *)arg, sizeof(v), -EFAULT);
+	if (copy_from_user(&v, (drm_r128_vertex_t *)arg, sizeof(v)))
+		return -EFAULT;
 	DRM_DEBUG("%d: %d send, %d req\n",
 		  current->pid, v.send_count, v.request_count);
 
@@ -916,7 +924,8 @@
 
 	DRM_DEBUG("%d returning, granted = %d\n",
 		  current->pid, v.granted_count);
-	copy_to_user_ret((drm_r128_vertex_t *)arg, &v, sizeof(v), -EFAULT);
+	if (copy_to_user((drm_r128_vertex_t *)arg, &v, sizeof(v)))
+		return -EFAULT;
 
 	return retcode;
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)