gpu: ion: Fix bug in ion client destroy
authorRebecca Schultz Zavin <rebecca@android.com>
Thu, 7 Jul 2011 01:07:01 +0000 (18:07 -0700)
committermgross <mark.gross@intel.com>
Wed, 9 Nov 2011 20:09:42 +0000 (12:09 -0800)
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>
drivers/gpu/ion/ion.c

index 1a63ebf..f11a566 100644 (file)
@@ -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;