i810_dma.c: fix pointer arithmetic for 64-bit target
PATCH 1/1 i810_dma.c: fix pointer arithmetic for 64-bit target
CC [M] drivers/char/drm/i810_dma.odrivers/char/drm/i810_dma.c: In function 'i810_map_buffer':drivers/char/drm/i810_dma.c:147: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c: In function 'i810_dma_dispatch_vertex':drivers/char/drm/i810_dma.c:811: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c:811: warning: cast to pointer from integer of different size drivers/char/drm/i810_dma.c: In function 'i810_dma_dispatch_mc':drivers/char/drm/i810_dma.c:1169: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c:1169: warning: cast to pointer from integer of different size
First warning result from open-coded PTR_ERR,
the rest is caused by code like this:
*(u32 *) ((u32) buf_priv->kernel_virtual + used)
Patch fixes this. Please apply.
--
vda
CC [M] drivers/char/drm/i810_dma.odrivers/char/drm/i810_dma.c: In function 'i810_map_buffer':drivers/char/drm/i810_dma.c:147: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c: In function 'i810_dma_dispatch_vertex':drivers/char/drm/i810_dma.c:811: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c:811: warning: cast to pointer from integer of different size drivers/char/drm/i810_dma.c: In function 'i810_dma_dispatch_mc':drivers/char/drm/i810_dma.c:1169: warning: cast from pointer to integer of different size drivers/char/drm/i810_dma.c:1169: warning: cast to pointer from integer of different size
drivers/char/drm/i810_dma.c renamed from drivers/char/drm/i810_dma.c.org +4 -4
@@ -141,10 +141,10 @@ static int i810_map_buffer(drm_buf_t * b MAP_SHARED, buf->bus_address); dev_priv->mmap_buffer =NULL ; filp->f_op = old_fops; -if ((unsigned long )buf_priv->virtual >-1024UL ) { +if (IS_ERR (buf_priv->virtual)) {/* Real error */ DRM_ERROR ("mmap error\n" ); - retcode = (signed int )buf_priv->virtual; + retcode =PTR_ERR (buf_priv->virtual); buf_priv->virtual =NULL ; }up_write (¤t->mm->mmap_sem);
@@ -808,7 +808,7 @@ static void i810_dma_dispatch_vertex(drm ((GFX_OP_PRIMITIVE | prim | ((used /4 ) -2 )));if (used &4 ) { - *(u32 *) ((u32 ) buf_priv->kernel_virtual + used) =0 ; + *(u32 *) ((char *) buf_priv->kernel_virtual + used) =0 ; used +=4 ; }
@@ -1166,7 +1166,7 @@ static void i810_dma_dispatch_mc(drm_devif (buf_priv->currently_mapped ==I810_BUF_MAPPED ) {if (used &4 ) { - *(u32 *) ((u32 ) buf_priv->virtual + used) =0 ; + *(u32 *) ((char *) buf_priv->virtual + used) =0 ; used +=4 ; }