diff options
| author | Rohit kumar <rohit.kr@samsung.com> | 2015-09-30 11:07:35 +0530 |
|---|---|---|
| committer | Mister Oyster <oysterized@gmail.com> | 2017-04-11 11:00:02 +0200 |
| commit | b5065b9e10b75f23eb782ffa19b65384d27045a6 (patch) | |
| tree | affaded86bd3655092d50513184c65d359526869 /drivers | |
| parent | baf1d9e59d76cdfa43a66da09a5f7889cac0c250 (diff) | |
UPSTREAM staging: ion: Fix error handling in ion_buffer_create
This patch fixes error handling case when buffer->pages allocation
fails. Also, it removes unreachable code of checking ret variable
although it is not updated.
Signed-off-by: Rohit kumar <rohit.kr@samsung.com>
Reviewed-by: Laura Abbott <labbott@redhat.com>
Suggested-by: Pintu Kumar <pintu.k@samsung.com>
Reviewed-by: Pintu Kumar <pintu.k@samsung.com>
Reviewed-by: Gioh Kim <gioh.kim@lge.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
(cherry picked from commit a56d092aa94ebcc9452ddaa47423b9a478aa6aa5)
Change-Id: Ic38b8e3ef0a21de4e38e58b4bb942535fe671ae5
Bug: 34283718
Diffstat (limited to 'drivers')
| -rwxr-xr-x | drivers/staging/android/ion/ion.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index b6b3e8045..d0871b408 100755 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -260,9 +260,8 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, table = ERR_PTR(-EINVAL); if (IS_ERR(table)) { IONMSG("%s table is err 0x%pK.\n", __func__, table); - heap->ops->free(buffer); - kfree(buffer); - return ERR_PTR(PTR_ERR(table)); + ret = -EINVAL; + goto err1; } buffer->sg_table = table; if (ion_buffer_fault_user_mappings(buffer)) { @@ -274,7 +273,7 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, if (!buffer->pages) { IONMSG("%s vamlloc failed pages is null.\n", __func__); ret = -ENOMEM; - goto err1; + goto err; } for_each_sg(table->sgl, sg, table->nents, i) { @@ -283,9 +282,6 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, for (j = 0; j < sg->length / PAGE_SIZE; j++) buffer->pages[k++] = page++; } - - if (ret) - goto err; } buffer->dev = dev; @@ -322,10 +318,8 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, err: heap->ops->unmap_dma(heap, buffer); - heap->ops->free(buffer); err1: - if (buffer->pages) - vfree(buffer->pages); + heap->ops->free(buffer); err2: kfree(buffer); return ERR_PTR(ret); |
