Messages in this thread | | | Subject | Re: [PATCH 1/1] staging: ion: Fix error handling in ion_buffer_create | From | Gioh Kim <> | Date | Thu, 1 Oct 2015 15:21:25 +0900 |
| |
2015-10-01 오후 2:31에 PINTU KUMAR 이(가) 쓴 글: > >> -----Original Message----- >> From: Laura Abbott [mailto:labbott@redhat.com] >> Sent: Wednesday, September 30, 2015 11:42 PM >> To: Rohit kumar; 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: pintu.k@samsung.com; me.rohit@live.com; pintu_agarwal@yahoo.com; >> c.rajkumar@samsung.com; sreenathd@samsung.com; cpgs@samsung.com; >> vishnu.ps@samsung.com >> Subject: Re: [PATCH 1/1] staging: ion: Fix error handling in ion_buffer_create >> >> On 09/29/2015 10:37 PM, Rohit kumar wrote: >>> 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. >>> >> >> Reviewed-by: Laura Abbott <labbott@redhat.com> >> >>> Signed-off-by: Rohit kumar <rohit.kr@samsung.com> >>> --- >>> 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); >>> > > Suggested-by: Pintu Kumar <pintu.k@samsung.com> > Reviewed-by: Pintu Kumar <pintu.k@samsung.com> > > >
It's nice! Reviewed-by: Gioh Kim <gioh.kim@lge.com>
| |