OSDN Git Service

Initialize kbuf to NULL to quiet the compiler about uninit variables
authorEric Anholt <anholt@freebsd.org>
Mon, 14 Feb 2005 03:22:58 +0000 (03:22 +0000)
committerEric Anholt <anholt@freebsd.org>
Mon, 14 Feb 2005 03:22:58 +0000 (03:22 +0000)
    (wasn't an issue). Don't forget to free kbuf if the copyin fails.

shared-core/radeon_state.c

index 883d1d0..1e606f3 100644 (file)
@@ -2725,7 +2725,7 @@ static int radeon_cp_cmdbuf(DRM_IOCTL_ARGS)
        drm_radeon_cmd_buffer_t cmdbuf;
        drm_radeon_cmd_header_t header;
        int orig_nbox, orig_bufsz;
        drm_radeon_cmd_buffer_t cmdbuf;
        drm_radeon_cmd_header_t header;
        int orig_nbox, orig_bufsz;
-       char *kbuf;
+       char *kbuf = NULL;
 
        LOCK_TEST_WITH_RETURN(dev, filp);
 
 
        LOCK_TEST_WITH_RETURN(dev, filp);
 
@@ -2756,8 +2756,10 @@ static int radeon_cp_cmdbuf(DRM_IOCTL_ARGS)
                kbuf = drm_alloc(cmdbuf.bufsz, DRM_MEM_DRIVER);
                if (kbuf == NULL)
                        return DRM_ERR(ENOMEM);
                kbuf = drm_alloc(cmdbuf.bufsz, DRM_MEM_DRIVER);
                if (kbuf == NULL)
                        return DRM_ERR(ENOMEM);
-               if (DRM_COPY_FROM_USER(kbuf, cmdbuf.buf, cmdbuf.bufsz))
+               if (DRM_COPY_FROM_USER(kbuf, cmdbuf.buf, cmdbuf.bufsz)) {
+                       drm_free(kbuf, orig_bufsz, DRM_MEM_DRIVER);
                        return DRM_ERR(EFAULT);
                        return DRM_ERR(EFAULT);
+               }
                cmdbuf.buf = kbuf;
        }
 
                cmdbuf.buf = kbuf;
        }