summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2013-02-27 09:52:47 +1000
committerBen Skeggs <bskeggs@redhat.com>2013-03-04 11:46:20 +1000
commit42bed34c364786b3757f9d788d8ed39120e8f1b5 (patch)
tree211380b5882d938b20c39456676df793ef5dd938 /drivers/gpu
parent67f9718b084ea7100cefa39b02863fcb14102f8c (diff)
downloadlinux-3.10-42bed34c364786b3757f9d788d8ed39120e8f1b5.tar.gz
linux-3.10-42bed34c364786b3757f9d788d8ed39120e8f1b5.tar.bz2
linux-3.10-42bed34c364786b3757f9d788d8ed39120e8f1b5.zip
drm/nouveau/i2c: drop parent refcount when creating ports
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>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/nouveau/core/subdev/i2c/base.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/i2c/base.c b/drivers/gpu/drm/nouveau/core/subdev/i2c/base.c
index a114a0ed7e9..2e98e8a3f1a 100644
--- a/drivers/gpu/drm/nouveau/core/subdev/i2c/base.c
+++ b/drivers/gpu/drm/nouveau/core/subdev/i2c/base.c
@@ -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);
}