summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorRebecca Schultz Zavin <rebecca@android.com>2011-07-06 18:07:01 -0700
committerRebecca Schultz Zavin <rebecca@android.com>2011-07-06 18:13:17 -0700
commit0b7e8ae7e4c780251482f702f5a2680707c5346e (patch)
tree6a52ec92f86f7f81eeac05a937251833a11e557a /drivers/gpu
parent245003348be73131becdaa4a34927b94a15f3041 (diff)
gpu: ion: Fix bug in ion client destroy
ion_client_destroy kernel api should only delete the client if it's refcount has gone to zero. Change-Id: Iaa662bd82d67279a9807e01f9a24aebe3d21c17d Signed-off-by: Rebecca Schultz Zavin <rebecca@android.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/ion/ion.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/ion/ion.c b/drivers/gpu/ion/ion.c
index 1a63ebff5ee..f11a566f9a7 100644
--- a/drivers/gpu/ion/ion.c
+++ b/drivers/gpu/ion/ion.c
@@ -705,8 +705,9 @@ struct ion_client *ion_client_create(struct ion_device *dev,
return client;
}
-void ion_client_destroy(struct ion_client *client)
+static void _ion_client_destroy(struct kref *kref)
{
+ struct ion_client *client = container_of(kref, struct ion_client, ref);
struct ion_device *dev = client->dev;
struct rb_node *n;
@@ -729,12 +730,6 @@ void ion_client_destroy(struct ion_client *client)
kfree(client);
}
-static void _ion_client_destroy(struct kref *kref)
-{
- struct ion_client *client = container_of(kref, struct ion_client, ref);
- ion_client_destroy(client);
-}
-
static void ion_client_get(struct ion_client *client)
{
kref_get(&client->ref);
@@ -745,6 +740,11 @@ static int ion_client_put(struct ion_client *client)
return kref_put(&client->ref, _ion_client_destroy);
}
+void ion_client_destroy(struct ion_client *client)
+{
+ ion_client_put(client);
+}
+
static int ion_share_release(struct inode *inode, struct file* file)
{
struct ion_buffer *buffer = file->private_data;