drm/radeon: no need to check all relocs for duplicates
authorChristian König <deathsimple@vodafone.de>
Mon, 24 Oct 2011 12:59:17 +0000 (14:59 +0200)
committerDave Airlie <airlied@redhat.com>
Tue, 20 Dec 2011 19:49:08 +0000 (19:49 +0000)
Only check the previously checked relocs for
duplicates. Also leaving the handle uninitialized
isn't such a good idea.

Signed-off-by: Christian König <deathsimple@vodafone.de>
Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_cs.c

index 29afd71e0840a0b9995b5e30027577adeec45b92..aaacadc86ae7a1b39d5dd290b01fbaa1f5aa8c1f 100644 (file)
@@ -58,7 +58,7 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
 
                duplicate = false;
                r = (struct drm_radeon_cs_reloc *)&chunk->kdata[i*4];
-               for (j = 0; j < p->nrelocs; j++) {
+               for (j = 0; j < i; j++) {
                        if (r->handle == p->relocs[j].handle) {
                                p->relocs_ptr[i] = &p->relocs[j];
                                duplicate = true;
@@ -84,7 +84,8 @@ int radeon_cs_parser_relocs(struct radeon_cs_parser *p)
                        p->relocs[i].flags = r->flags;
                        radeon_bo_list_add_object(&p->relocs[i].lobj,
                                                  &p->validated);
-               }
+               } else
+                       p->relocs[i].handle = 0;
        }
        return radeon_bo_list_validate(&p->validated);
 }