Re: [PATCH v1] mm/gup: disallow FOLL_FORCE|FOLL_WRITE on hugetlb mappings

From: David Hildenbrand
Date: Wed Nov 02 2022 - 05:17:24 EST


On 31.10.22 17:14, Jason Gunthorpe wrote:
On Mon, Oct 31, 2022 at 04:25:24PM +0100, David Hildenbrand wrote:
Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: Mike Kravetz <mike.kravetz@xxxxxxxxxx>
Cc: Peter Xu <peterx@xxxxxxxxxx>
Cc: John Hubbard <jhubbard@xxxxxxxxxx>
Cc: Jason Gunthorpe <jgg@xxxxxxxxxx>
Reported-by: syzbot+f0b97304ef90f0d0b1dc@xxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: David Hildenbrand <david@xxxxxxxxxx>
---

I assume this has been broken at least since 2014, when mm/gup.c came to
life. I failed to come up with a suitable Fixes tag quickly.

I'm worried this would break RDMA over hugetlbfs maps - which is a
real thing people do.

MikeK do you have test cases?

This patch here only silences the warning. The warning+failing is already in 6.0, and so far nobody (besides syzbot) complained.

RDMA (due to FOLL_FORCE) would now fail (instead of doing something wrong) on MAP_PRIVATE hugetlb mappings that are R/O. Do we have any actual examples of such RDMA usage? I was able to understand why this case (MAP_PRIVATE, PROT_READ) is important for !hugetlb, but I don't immediately see under which situations this would apply to hugetlb.

While we could implement FOLL_FORCE for hugetlb, at least for RDMA we will be moving away from FOLL_FORCE instead --- I'll be posting these patches shortly.

So considering upcoming changes, at least RDMA is rather a bad excuse for more widespread FOLL_FORCE support.

--
Thanks,

David / dhildenb