From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753666AbbI3FdB (ORCPT ); Wed, 30 Sep 2015 01:33:01 -0400 Received: from mailout4.samsung.com ([203.254.224.34]:58494 "EHLO mailout4.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753496AbbI3Fcp (ORCPT ); Wed, 30 Sep 2015 01:32:45 -0400 X-AuditID: cbfee68d-f79ae6d00000149a-d3-560b73fbe8f8 From: Rohit kumar To: gregkh@linuxfoundation.org, arve@android.com, riandrews@android.com, dan.carpenter@oracle.com, sumit.semwal@linaro.org, mitchelh@codeaurora.org, akpm@linux-foundation.org, linux@rasmusvillemoes.dk, dmitry.kalinkin@gmail.com, elfring@users.sourceforge.net, gioh.kim@lge.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org Cc: cpgs@samsung.com, pintu.k@samsung.com, pintu_agarwal@yahoo.com, rohit.kr@samsung.com, vishnu.ps@samsung.com, sreenathd@samsung.com, c.rajkumar@samsung.com, me.rohit@live.com Subject: [PATCH 1/1] staging: ion: Fix error handling in ion_buffer_create Date: Wed, 30 Sep 2015 11:07:35 +0530 Message-id: <1443591455-14656-1-git-send-email-rohit.kr@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAAzVSa0hTYRjuO/vO2XFmnpbW1yDNVVDhJe9fZDfwx0EIA8EfEui0gxOd2o6K QciaRTnZyhvJnG4ZpujKGLnUpNkECxMdGJrTGSReysxKU8q0tkb/3ufG88L70gJxN5TQOflF nDJflielRNAcEFMWtsn7pp4wTMVjQ6eZwitb7ylcWVtD4I/2Y3hp+x7EfcO/hPiLcQ7i0YpW AZ5XrwFc/qCTwmO9BgrP6psoPDFzFj8yWims2xgQ4vXlKSFesmwBvFB+E+LK2XKIh1yrQlyr c4Fzgaz1uZVkx3Ragp15MQDZHr1LyGqW3xLs9Hgfxb6u34SsrdEsZG87VST7bc4JWYcml9U9 bQeseugWya5agli9foC46J8mSrjM5eWUcMqIMxkiefO0niq8s6vUUR6sAj2+GuBDIyYG9TeM Ae+8FzlmOikNENFipg2gqdFh8r9p0PhK4BVaAPpTbYReoCbQB5PhX5xijqJ++xrhEQKYcQIt 2xuBBwiYLoDqm23Q49rDJKHfTd/dJTQNmSOopSHNQ/sxiahlw0x6aMQcRIbqBE8UMd00smhV Qo8HMgxar7FDr+cAsvQLvNvtRy/b3sG7YLcJ7GgHgVxhViGfma2MDOdlCr44Pzs8q0BhAe6D vtme13aDqf5TdsDQQLrTb5HxTRWTshL+qsIOYt0NVQJJYFaB+wfyi9Ijo+OicGxMbHRU/Mk4 6T6/EMnPFDGTLSvicjmukFOmK4vzON4OCNpHogIuk/yCOSLT+bn1/uQPq65q5EaJ5rxNGuoY qAgik1xbmcm6jiuJIdkRZGlxV0FC2HKd/tm1jaQUdQdq2V6oC00+nSrfclyf9q/TjWzzfQrn k0W6rFE7aRu3Fl8CHY9NGmeX/HDwtHpwIvNh+mhO72x6dbvjK1+V8EmQsdJ0SAp5uSzyuEDJ y/4Cy3b5QssCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmplleLIzCtJLcpLzFFi42I5/e+xgO7vYu4wg3PXNC3mrF/DZvH+7302 i+4pk5ksXh7StHj9bzqLxZ4zv9gt3s1/ymJxvnM5s8Wzpi+MFs2L17NZXN41h83i8ax5bBbX 79lbrJ2/jc2i7/thdotvb2+zW7ze9JfR4nlzK4tF9+NmFotTdz+zW0zpu8voIOqxbfc2Vo/L fb1MHvf2HWbx2DnrLrtH19srTB53ru1h8zgx4zeLx/65a9g9Om41sHp8fHqLxeNCV7ZH35ZV jB5Np9pZPT5vkvOYNeswUwB/VAOjTUZqYkpqkUJqXnJ+SmZeuq2Sd3C8c7ypmYGhrqGlhbmS Ql5ibqqtkotPgK5bZg7Q80oKZYk5pUChgMTiYiV9O0wTQkPcdC1gGiN0fUOC4HqMDNBAwhrG jEV3ZrEV9PNVXGiWb2Dcyd3FyMkhIWAicWz+cWYIW0ziwr31bF2MXBxCAksZJf5Pms8C4TQx STxaMIcRpIpNQEPiwKEvTCAJEYFrTBJvD81lBHGYBbYySsxYtJ8FpEpYwEviz7xPQLM4OFgE VCWWzo4CCfMKuEgs/b6GFSQsIaAgMWeSzQRG7gWMDKsYJVILkguKk9JzjfJSy/WKE3OLS/PS 9ZLzczcxgpPAM+kdjId3uR9iFOBgVOLhncDHHSbEmlhWXJl7iFGCg1lJhPepBVCINyWxsiq1 KD++qDQntfgQoynQ+onMUqLJ+cAElVcSb2hsYm5qbGppYmFiZqkkznvjEEOYkEB6Yklqdmpq QWoRTB8TB6dUA+PiBfGZkf/fxvqxyfxQYU+6+PJS7SyXn33WD3/LP1wV2qPI4uL7/d+mx+kC e87cCP1vst716AP2t9sjhL8EKx3ddKV/TlGEnCrXvxOfL64pqeIJe7t9j1VsDJOZr1zMiejj X7y47/c9j/ZSSqrIP2d28l35NREH1l2et7i2m1gkXrPiKlnwuUCJpTgj0VCLuag4EQDYLg+6 GAMAAA== DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- drivers/staging/android/ion/ion.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c index 217aa53..af59e4a 100644 --- a/drivers/staging/android/ion/ion.c +++ b/drivers/staging/android/ion/ion.c @@ -213,10 +213,10 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, "heap->ops->map_dma should return ERR_PTR on error")) table = ERR_PTR(-EINVAL); if (IS_ERR(table)) { - heap->ops->free(buffer); - kfree(buffer); - return ERR_CAST(table); + ret = -EINVAL; + goto err1; } + buffer->sg_table = table; if (ion_buffer_fault_user_mappings(buffer)) { int num_pages = PAGE_ALIGN(buffer->size) / PAGE_SIZE; @@ -226,7 +226,7 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, buffer->pages = vmalloc(sizeof(struct page *) * num_pages); if (!buffer->pages) { ret = -ENOMEM; - goto err1; + goto err; } for_each_sg(table->sgl, sg, table->nents, i) { @@ -235,9 +235,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; @@ -261,9 +258,8 @@ static struct ion_buffer *ion_buffer_create(struct ion_heap *heap, err: heap->ops->unmap_dma(heap, buffer); - heap->ops->free(buffer); err1: - vfree(buffer->pages); + heap->ops->free(buffer); err2: kfree(buffer); return ERR_PTR(ret); -- 1.7.9.5