drivers/gpu/drm/i915/i915_gem.c: Add missing error handling code
authorJulia Lawall <julia@diku.dk>
Sat, 2 Oct 2010 13:59:17 +0000 (15:59 +0200)
committerChris Wilson <chris@chris-wilson.co.uk>
Sat, 2 Oct 2010 14:21:26 +0000 (15:21 +0100)
Extend the error handling code with operations found in other nearby error
handling code

A simplified version of the sematic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
@r@
statement S1,S2,S3;
constant C1,C2,C3;
@@

*if (...)
 {... S1 return -C1;}
...
*if (...)
 {... when != S1
    return -C2;}
...
*if (...)
 {... S1 return -C3;}
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: stable@kernel.org
drivers/gpu/drm/i915/i915_gem.c

index bced9b25c71e2bc5819c3b02dfde055909937323..cfe597865f5dd312d6528e9ce2a29eb22c48c1d4 100644 (file)
@@ -3258,6 +3258,8 @@ i915_gem_object_pin_and_relocate(struct drm_gem_object *obj,
                                  (int) reloc->offset,
                                  reloc->read_domains,
                                  reloc->write_domain);
+                       drm_gem_object_unreference(target_obj);
+                       i915_gem_object_unpin(obj);
                        return -EINVAL;
                }
                if (reloc->write_domain & I915_GEM_DOMAIN_CPU ||