A few questions about warnings in the ion driver

Laura Abbott labbott at redhat.com
Mon May 14 17:46:31 UTC 2018


On 05/07/2018 07:51 AM, Nathan Chancellor wrote:
> On Mon, May 07, 2018 at 06:46:23AM -0700, Laura Abbott wrote:
>> On 05/06/2018 06:43 PM, Nathan Chancellor wrote:
>>> Hi everyone,
>>>
>>> I compiled the ion driver with W=1 where I encountered the two following
>>> warnings and I had a couple of questions about solving them.
>>>
>>>
>>> 1.
>>>
>>> drivers/staging/android/ion/ion.c: In function ‘ion_dma_buf_begin_cpu_access’:
>>> drivers/staging/android/ion/ion.c:316:8: warning: variable ‘vaddr’ set but not used [-Wunused-but-set-variable]
>>>
>>> which concerns the following function:
>>>
>>> static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
>>>                                           enum dma_data_direction direction)
>>> {
>>>           struct ion_buffer *buffer = dmabuf->priv;
>>>           void *vaddr;
>>>           struct ion_dma_buf_attachment *a;
>>>
>>>           /*
>>>            * TODO: Move this elsewhere because we don't always need a vaddr
>>>            */
>>>           if (buffer->heap->ops->map_kernel) {
>>>                   mutex_lock(&buffer->lock);
>>>                   vaddr = ion_buffer_kmap_get(buffer);
>>>                   mutex_unlock(&buffer->lock);
>>>           }
>>>
>>>           mutex_lock(&buffer->lock);
>>>           list_for_each_entry(a, &buffer->attachments, list) {
>>>                   dma_sync_sg_for_cpu(a->dev, a->table->sgl, a->table->nents,
>>>                                       direction);
>>>           }
>>>           mutex_unlock(&buffer->lock);
>>>
>>>           return 0;
>>> }
>>>
>>> Can vaddr be removed and just have ion_buffer_kmap_get remain, since it is never used again in the function?
>>>
>>
>> I think a better solution is to check the return value of vaddr
>> and error out if it fails.
>>
> 
> Something like this? I was unsure if -ENOMEM or -EINVAL was a better
> error return code in this context.
> 
> diff --git a/drivers/staging/android/ion/ion.c b/drivers/staging/android/ion/ion.c
> index d10b60fe4a29..d1c149bb15c3 100644
> --- a/drivers/staging/android/ion/ion.c
> +++ b/drivers/staging/android/ion/ion.c
> @@ -315,6 +315,7 @@ static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
>          struct ion_buffer *buffer = dmabuf->priv;
>          void *vaddr;
>          struct ion_dma_buf_attachment *a;
> +       int ret = 0;
> 
>          /*
>           * TODO: Move this elsewhere because we don't always need a vaddr
> @@ -322,6 +323,10 @@ static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
>          if (buffer->heap->ops->map_kernel) {
>                  mutex_lock(&buffer->lock);
>                  vaddr = ion_buffer_kmap_get(buffer);
> +               if (IS_ERR(vaddr)) {
> +                   ret = -ENOMEM;

A better practice is to just return the error that's returned

ret = PTR_ERR(vaddr);

Other than that looks okay for submission as a patch.

Thanks,
Laura

> +                   goto unlock;
> +               }
>                  mutex_unlock(&buffer->lock);
>          }
> 
> @@ -330,9 +335,10 @@ static int ion_dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
>                  dma_sync_sg_for_cpu(a->dev, a->table->sgl, a->table->nents,
>                                      direction);
>          }
> -       mutex_unlock(&buffer->lock);
> 
> -       return 0;
> +unlock:
> +       mutex_unlock(&buffer->lock);
> +       return ret;
>   }
> 
>   static int ion_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
> 
>>>
>>> 2.
>>>
>>> drivers/staging/android/ion/ion_carveout_heap.c:106:18: warning: no previous prototype for ‘ion_carveout_heap_create’ [-Wmissing-prototypes]
>>> drivers/staging/android/ion/ion_chunk_heap.c:111:18: warning: no previous prototype for ‘ion_chunk_heap_create’ [-Wmissing-prototypes]
>>>
>>> It appears neither of these functions are used since commit 2f87f50b2340
>>> ("staging: android: ion: Rework heap registration/enumeration"). Ultimately,
>>> removing the whole file fixes this warning; is there still a need to rework
>>> them or can they be removed?
>>>
>>
>> I'd still like to delete it. I haven't seen anyone come out to re-work it.
>> That said, I think my preference is still to keep it for now until
>> we do another round of updates.
>>
> 
> Understood, I figured it probably isn't wise to remove stuff in the
> middle of a release cycle but hey, never know. I will leave it alone
> for now.
> 
> Thanks!
> Nathan
> 
>> Thanks for looking at these.
>>
>> Laura
>>
>>>
>>> If any part of this email was formatted incorrectly or could be done better,
>>> please let me know!
>>>
>>> Thank you,
>>> Nathan Chancellor
>>>
>>



More information about the devel mailing list