Re: [PATCH] ion: scatterlist offset not used for buffer map

From: Laura Abbott
Date: Fri Apr 08 2016 - 18:44:11 EST


On 04/07/2016 11:56 PM, John Einar Reitan wrote:
On Thu, Apr 07, 2016 at 12:37:50PM -0700, Laura Abbott wrote:
On 04/07/2016 04:29 AM, John Einar Reitan wrote:
ion's default user/kernel page mapping code don't honor the offset
option for scatterlists. It uses sg_page and expect the whole page to be
mapped, while the offset could dictate an offset within a large page.

sg_phys correctly accounts for the offset, so should be used instead.


Can you be more specific about which heap and which allocation pattern
is exposing this bug?

The heap that exposed the bug is one I'm developing and will be posting
as a RFC soon. It uses compound pages and an sub-divides it into surface
buffers. The ion buffers are configured to hold sgl's with the compound
page and the correct offset of the buffer, via
sg_set_page(.., compound_page, .., offset_of_logical_buffer);

sg_phys/sg_virt includes this offset, but if you poke the sg and extract
the page with sg_page yourself you must include this offset in your
calculations too.


This patch should be re-sent when you have the RFC for the heap. Unless
there is a heap available in tree we don't really need this patch.

Thanks,
Laura