Hello Jens,
Jens Wiklander writes: > On Mon, Oct 12, 2020 at 11:26 AM Volodymyr Babchuk > <volodymyr_babc...@epam.com> wrote: >> >> Before passing 'start' to find_vma() we need to remove >> tags from it to get sane results. >> >> Signed-off-by: Volodymyr Babchuk <volodymyr_babc...@epam.com> >> --- >> drivers/tee/optee/call.c | 2 ++ >> 1 file changed, 2 insertions(+) > > Would you mind giving a bit more background to this? For example in > which contexts this function does or doesn't work as expected? Do you > have any special use cases that don't work, etc? This is not a new > regression, it's rather a problem we've always had, right? Yes, sorry. I had to clarify in the commit description. Issue was found on Android. Android uses pointer tagging [1], so MSB of user pointers contain tags. As a result, passing raw user address to find_vma() leads to NULL result, as it only traverses RB tree and does not alter passed address in any way. Code in mm/gup.c already strips tags and maybe, it is better to call untagged_addr() inside of find_vma(). I'm not sure. Probably, we need some help from MM maintainers. Anyways, this patched fixed issue with register_shm failing in our use case. [1] https://source.android.com/devices/tech/debug/tagged-pointers -- Volodymyr Babchuk at EPAM