Hi Catalin,
Le 16/04/2022 à 00:09, Andrew Morton a écrit :
On Fri, 15 Apr 2022 16:45:13 +0200 Christophe Leroy christophe.leroy@csgroup.eu wrote:
This is a fix for commit f6795053dac8 ("mm: mmap: Allow for "high" userspace addresses") for hugetlb.
This patch adds support for "high" userspace addresses that are optionally supported on the system and have to be requested via a hint mechanism ("high" addr parameter to mmap).
Architectures such as powerpc and x86 achieve this by making changes to their architectural versions of hugetlb_get_unmapped_area() function. However, arm64 uses the generic version of that function.
So take into account arch_get_mmap_base() and arch_get_mmap_end() in hugetlb_get_unmapped_area(). To allow that, move those two macros out of mm/mmap.c into include/linux/sched/mm.h
If these macros are not defined in architectural code then they default to (TASK_SIZE) and (base) so should not introduce any behavioural changes to architectures that do not define them.
For the time being, only ARM64 is affected by this change.
From Catalin (ARM64):
We should have fixed hugetlb_get_unmapped_area() as well when we added support for 52-bit VA. The reason for commit f6795053dac8 was to prevent normal mmap() from returning addresses above 48-bit by default as some user-space had hard assumptions about this.
It's a slight ABI change if you do this for hugetlb_get_unmapped_area() but I doubt anyone would notice. It's more likely that the current behaviour would cause issues, so I'd rather have them consistent.
I'm struggling to understand the need for a -stable backport from the above text.
Could we please get a simple statement of the end-user visible effects of the shortcoming? Target audience is -stable tree maintainers, and people who we've never heard of who will be wondering whether they should add this to their organization's older kernel.
Catalin, can you help answering this question ? It was your recommendation to tag this patch for stable in https://patchwork.ozlabs.org/project/linuxppc-dev/patch/db238c1ca2d46e33c573...
fs/hugetlbfs/inode.c | 9 +++++---- include/linux/sched/mm.h | 8 ++++++++ mm/mmap.c | 8 -------- 3 files changed, 13 insertions(+), 12 deletions(-)
I'm a bit surprised that this has reached version 10! Was it really that tricky?
Well, that's the series it was part of that has reached v10. This patch was introduced in the series in v6
v6: https://patchwork.ozlabs.org/project/linuxppc-dev/patch/db238c1ca2d46e33c573... v7: https://patchwork.ozlabs.org/project/linuxppc-dev/patch/6c95091eab9f58cee58d... v8: https://patchwork.ozlabs.org/project/linuxppc-dev/patch/c234ceaf81ff37447fec... v9: https://patchwork.ozlabs.org/project/linuxppc-dev/patch/3bb944642140841c065f...
Thanks Christophe