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>
diff --git a/drivers/gpu/ion/ion.c b/drivers/gpu/ion/ion.c
index 1a63ebf..f11a566 100644
--- a/drivers/gpu/ion/ion.c
+++ b/drivers/gpu/ion/ion.c
@@ -705,8 +705,9 @@
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 @@
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 @@
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;