From: Alexey Dobriyan <[email-masked]>

Signed-off-by: Alexey Dobriyan <[email-masked]>
Cc: Dave Airlie <[email-masked]>
Signed-off-by: Andrew Morton <[email-masked]>
---

 drivers/char/drm/via_dma.c   |   10 +++++-----
 drivers/char/drm/via_drm.h   |    2 +-
 drivers/char/drm/via_ds.c    |    4 ++--
 drivers/char/drm/via_ds.h    |    4 ++--
 drivers/char/drm/via_map.c   |    3 ++-
 drivers/char/drm/via_mm.c    |   15 +++++++++------
 drivers/char/drm/via_video.c |    3 ++-
 7 files changed, 23 insertions(+), 18 deletions(-)

diff -puN drivers/char/drm/via_dma.c~drm-via-fix-sparse-warnings drivers/char/drm/via_dma.c
--- 25/drivers/char/drm/via_dma.c~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_dma.c	Mon Jul 11 15:16:37 2005
@@ -231,7 +231,7 @@ int via_dma_init(DRM_IOCTL_ARGS)
 	drm_via_dma_init_t init;
 	int retcode = 0;
 
-	DRM_COPY_FROM_USER_IOCTL(init, (drm_via_dma_init_t *) data,
+	DRM_COPY_FROM_USER_IOCTL(init, (drm_via_dma_init_t __user *) data,
 				 sizeof(init));
 
 	switch (init.func) {
@@ -343,7 +343,7 @@ int via_cmdbuffer(DRM_IOCTL_ARGS)
 
 	LOCK_TEST_WITH_RETURN( dev, filp );
 
-	DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t *) data,
+	DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t __user *) data,
 				 sizeof(cmdbuf));
 
 	DRM_DEBUG("via cmdbuffer, buf %p size %lu\n", cmdbuf.buf, cmdbuf.size);
@@ -386,7 +386,7 @@ int via_pci_cmdbuffer(DRM_IOCTL_ARGS)
 
 	LOCK_TEST_WITH_RETURN( dev, filp );
 
-	DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t *) data,
+	DRM_COPY_FROM_USER_IOCTL(cmdbuf, (drm_via_cmdbuffer_t __user *) data,
 				 sizeof(cmdbuf));
 
 	DRM_DEBUG("via_pci_cmdbuffer, buf %p size %lu\n", cmdbuf.buf,
@@ -701,7 +701,7 @@ via_cmdbuf_size(DRM_IOCTL_ARGS)
 		return DRM_ERR(EFAULT);
 	}
 
-	DRM_COPY_FROM_USER_IOCTL(d_siz, (drm_via_cmdbuf_size_t *) data,
+	DRM_COPY_FROM_USER_IOCTL(d_siz, (drm_via_cmdbuf_size_t __user *) data,
 				 sizeof(d_siz));

@@ -735,7 +735,7 @@ via_cmdbuf_size(DRM_IOCTL_ARGS)
 	}
 	d_siz.size = tmp_size;
 
-	DRM_COPY_TO_USER_IOCTL((drm_via_cmdbuf_size_t *) data, d_siz,
+	DRM_COPY_TO_USER_IOCTL((drm_via_cmdbuf_size_t __user *) data, d_siz,
 			       sizeof(d_siz));
 	return ret;
 }
diff -puN drivers/char/drm/via_drm.h~drm-via-fix-sparse-warnings drivers/char/drm/via_drm.h
--- 25/drivers/char/drm/via_drm.h~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_drm.h	Mon Jul 11 15:16:37 2005
@@ -158,7 +158,7 @@ typedef struct _drm_via_dma_init {
 } drm_via_dma_init_t;
 
 typedef struct _drm_via_cmdbuffer {
-	char *buf;
+	char __user *buf;
 	unsigned long size;
 } drm_via_cmdbuffer_t;
 
diff -puN drivers/char/drm/via_ds.c~drm-via-fix-sparse-warnings drivers/char/drm/via_ds.c
--- 25/drivers/char/drm/via_ds.c~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_ds.c	Mon Jul 11 15:16:37 2005
@@ -133,7 +133,7 @@ memHeap_t *via_mmInit(int ofs, int size)
 	PMemBlock blocks;
 
 	if (size <= 0)
-		return 0;
+		return NULL;
 
 	blocks = (TMemBlock *) drm_calloc(1, sizeof(TMemBlock), DRM_MEM_DRIVER);
 
@@ -143,7 +143,7 @@ memHeap_t *via_mmInit(int ofs, int size)
 		blocks->free = 1;
 		return (memHeap_t *) blocks;
 	} else
-		return 0;
+		return NULL;
 }
 
 static TMemBlock *SliceBlock(TMemBlock * p,
diff -puN drivers/char/drm/via_ds.h~drm-via-fix-sparse-warnings drivers/char/drm/via_ds.h
--- 25/drivers/char/drm/via_ds.h~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_ds.h	Mon Jul 11 15:16:37 2005
@@ -61,8 +61,8 @@ struct mem_block_t {
 	struct mem_block_t *heap;
 	int ofs, size;
 	int align;
-	int free:1;
-	int reserved:1;
+	unsigned int free:1;
+	unsigned int reserved:1;
 };
 typedef struct mem_block_t TMemBlock;
 typedef struct mem_block_t *PMemBlock;
diff -puN drivers/char/drm/via_map.c~drm-via-fix-sparse-warnings drivers/char/drm/via_map.c
--- 25/drivers/char/drm/via_map.c~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_map.c	Mon Jul 11 15:16:37 2005
@@ -95,7 +95,8 @@ int via_map_init(DRM_IOCTL_ARGS)
 
 	DRM_DEBUG("%s\n", __FUNCTION__);
 
-	DRM_COPY_FROM_USER_IOCTL(init, (drm_via_init_t *) data, sizeof(init));
+	DRM_COPY_FROM_USER_IOCTL(init, (drm_via_init_t __user *) data,
+				 sizeof(init));
 
 	switch (init.func) {
 	case VIA_INIT_MAP:
diff -puN drivers/char/drm/via_mm.c~drm-via-fix-sparse-warnings drivers/char/drm/via_mm.c
--- 25/drivers/char/drm/via_mm.c~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_mm.c	Mon Jul 11 15:16:37 2005
@@ -76,7 +76,8 @@ int via_agp_init(DRM_IOCTL_ARGS)
 {
 	drm_via_agp_t agp;
 
-	DRM_COPY_FROM_USER_IOCTL(agp, (drm_via_agp_t *) data, sizeof(agp));
+	DRM_COPY_FROM_USER_IOCTL(agp, (drm_via_agp_t __user *) data,
+				 sizeof(agp));
 
 	AgpHeap = via_mmInit(agp.offset, agp.size);
 
@@ -92,7 +93,7 @@ int via_fb_init(DRM_IOCTL_ARGS)
 {
 	drm_via_fb_t fb;
 
-	DRM_COPY_FROM_USER_IOCTL(fb, (drm_via_fb_t *) data, sizeof(fb));
+	DRM_COPY_FROM_USER_IOCTL(fb, (drm_via_fb_t __user *) data, sizeof(fb));
 
 	FBHeap = via_mmInit(fb.offset, fb.size);
 
@@ -193,19 +194,20 @@ int via_mem_alloc(DRM_IOCTL_ARGS)
 {
 	drm_via_mem_t mem;
 
-	DRM_COPY_FROM_USER_IOCTL(mem, (drm_via_mem_t *) data, sizeof(mem));
+	DRM_COPY_FROM_USER_IOCTL(mem, (drm_via_mem_t __user *) data,
+				 sizeof(mem));
 
 	switch (mem.type) {
 	case VIDEO:
 		if (via_fb_alloc(&mem) < 0)
 			return -EFAULT;
-		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t *) data, mem,
+		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t __user *) data, mem,
 				       sizeof(mem));
 		return 0;
 	case AGP:
 		if (via_agp_alloc(&mem) < 0)
 			return -EFAULT;
-		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t *) data, mem,
+		DRM_COPY_TO_USER_IOCTL((drm_via_mem_t __user *) data, mem,
 				       sizeof(mem));
 		return 0;
 	}
@@ -289,7 +291,8 @@ int via_mem_free(DRM_IOCTL_ARGS)
 {
 	drm_via_mem_t mem;
 
-	DRM_COPY_FROM_USER_IOCTL(mem, (drm_via_mem_t *) data, sizeof(mem));
+	DRM_COPY_FROM_USER_IOCTL(mem, (drm_via_mem_t __user *) data,
+				 sizeof(mem));
 
 	switch (mem.type) {
 
diff -puN drivers/char/drm/via_video.c~drm-via-fix-sparse-warnings drivers/char/drm/via_video.c
--- 25/drivers/char/drm/via_video.c~drm-via-fix-sparse-warnings	Mon Jul 11 15:16:37 2005
+++ 25-akpm/drivers/char/drm/via_video.c	Mon Jul 11 15:16:37 2005
@@ -76,7 +76,8 @@ via_decoder_futex(DRM_IOCTL_ARGS)
 
 	DRM_DEBUG("%s\n", __FUNCTION__);
 
-	DRM_COPY_FROM_USER_IOCTL(fx, (drm_via_futex_t *) data, sizeof(fx));
+	DRM_COPY_FROM_USER_IOCTL(fx, (drm_via_futex_t __user *) data,
+				 sizeof(fx));
 
 	if (fx.lock > VIA_NR_XVMC_LOCKS)
 		return -EFAULT;
_