drm/nouveau/i2c: drop parent refcount when creating ports
authorBen Skeggs <bskeggs@redhat.com>
Tue, 26 Feb 2013 23:52:47 +0000 (09:52 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 4 Mar 2013 01:46:20 +0000 (11:46 +1000)
Fixes issue where i2c subdev never gets destroyed due to its subobjects
holding references.  This will mean the i2c subdev refcount goes
negative during its destruction, but this isn't an issue in practice.

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/core/subdev/i2c/base.c

index a114a0ed7e98d13546a2d8672990985fd3f4c257..2e98e8a3f1aa33c8ccf9673334d7fd3e73dab708 100644 (file)
@@ -142,6 +142,7 @@ nouveau_i2c_port_create_(struct nouveau_object *parent,
        /* drop port's i2c subdev refcount, i2c handles this itself */
        if (ret == 0) {
                list_add_tail(&port->head, &i2c->ports);
+               atomic_dec(&parent->refcount);
                atomic_dec(&engine->refcount);
        }