diff options
author | Rebecca Schultz Zavin <rebecca@android.com> | 2011-07-06 18:07:01 -0700 |
---|---|---|
committer | Rebecca Schultz Zavin <rebecca@android.com> | 2011-07-06 18:13:17 -0700 |
commit | 0b7e8ae7e4c780251482f702f5a2680707c5346e (patch) | |
tree | 6a52ec92f86f7f81eeac05a937251833a11e557a /drivers/gpu/ion/ion.c | |
parent | 245003348be73131becdaa4a34927b94a15f3041 (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/ion/ion.c')
-rw-r--r-- | drivers/gpu/ion/ion.c | 14 |
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; |