summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRebecca Schultz Zavin <rebecca@android.com>2011-12-13 01:21:19 +0800
committerAndy Green <andy.green@linaro.org>2011-12-26 16:41:47 +0800
commita49189a2220f2cfba6c8112194d6db92bf923562 (patch)
tree624676b62d6948826eba99c6bf9e69425c36e866 /drivers
parent71eeef8520c0c0ca6cf83b3f754967952130d67d (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')
-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;