2014-07-23 20:04:12

by Nicholas Krause

[permalink] [raw]
Subject: staging: Unwritten function for ion_carveout_heap.c

Hey Greg and others.
Sorry for another email but it seems the function,
ion_carveout_heap_unmap_dma is
just returning and not doing anything useful. Furthermore I am new so
I don't known how
to write this function but this may be causing some rather serious
bugs as if the dma heap
is not unmaped and we call this function a lot this will make the
kernel not able to handle dma requests
for this driver and other drivers that need this and in turn lead to
a oops or even a kernel panic due to leaked
dma allocated memory. I would recommend writing this function or
helping me write it in
other to avoid some rather serious bugs without a proper dma unmapping
function for this driver :).
Nick


2014-07-23 20:17:28

by Colin Cross

[permalink] [raw]
Subject: Re: staging: Unwritten function for ion_carveout_heap.c

On Wed, Jul 23, 2014 at 1:04 PM, Nick Krause <[email protected]> wrote:
> Hey Greg and others.
> Sorry for another email but it seems the function,
> ion_carveout_heap_unmap_dma is
> just returning and not doing anything useful. Furthermore I am new so
> I don't known how
> to write this function but this may be causing some rather serious
> bugs as if the dma heap
> is not unmaped and we call this function a lot this will make the
> kernel not able to handle dma requests
> for this driver and other drivers that need this and in turn lead to
> a oops or even a kernel panic due to leaked
> dma allocated memory. I would recommend writing this function or
> helping me write it in
> other to avoid some rather serious bugs without a proper dma unmapping
> function for this driver :).
> Nick

Look at ion_carveout_heap_map_dma - it doesn't do anything, it just
returns a pre-existing virtual address. That means there is nothing
to do in unmap.

map_dma is actually a bit of a misnomer here, as the actual mapping is
done in ion_map_dma_buf. All ion_carveout_heap_map_dma does is return
the sg table for ion_map_dma_buf to pass to dma_map_sg.

2014-07-23 20:24:05

by Nicholas Krause

[permalink] [raw]
Subject: Re: staging: Unwritten function for ion_carveout_heap.c

On Wed, Jul 23, 2014 at 4:10 PM, Colin Cross <[email protected]> wrote:
> On Wed, Jul 23, 2014 at 1:04 PM, Nick Krause <[email protected]> wrote:
>> Hey Greg and others.
>> Sorry for another email but it seems the function,
>> ion_carveout_heap_unmap_dma is
>> just returning and not doing anything useful. Furthermore I am new so
>> I don't known how
>> to write this function but this may be causing some rather serious
>> bugs as if the dma heap
>> is not unmaped and we call this function a lot this will make the
>> kernel not able to handle dma requests
>> for this driver and other drivers that need this and in turn lead to
>> a oops or even a kernel panic due to leaked
>> dma allocated memory. I would recommend writing this function or
>> helping me write it in
>> other to avoid some rather serious bugs without a proper dma unmapping
>> function for this driver :).
>> Nick
>
> Look at ion_carveout_heap_map_dma - it doesn't do anything, it just
> returns a pre-existing virtual address. That means there is nothing
> to do in unmap.
>
> map_dma is actually a bit of a misnomer here, as the actual mapping is
> done in ion_map_dma_buf. All ion_carveout_heap_map_dma does is return
> the sg table for ion_map_dma_buf to pass to dma_map_sg.


Very well then I guess this is closed then.
Cheers Nick