[PATCH RFC] arm64/vmalloc: use module region only for module_alloc() if CONFIG_RANDOMIZE_BASE is set

Linux regression tracking (Thorsten Leemhuis) regressions at leemhuis.info
Mon Feb 27 07:08:20 PST 2023


[CCing the regression list, as it should be in the loop for regressions:
https://docs.kernel.org/admin-guide/reporting-regressions.html]

On 07.02.23 12:29, Will Deacon wrote:
> On Tue, Jan 31, 2023 at 05:03:32PM +0100, Ard Biesheuvel wrote:
>> On Tue, 31 Jan 2023 at 16:07, Will Deacon <will at kernel.org> wrote:
>>> On Tue, Jan 31, 2023 at 03:06:44PM +0000, Will Deacon wrote:
>>>> On Sun, Jan 29, 2023 at 01:41:47PM -0800, Andrew Morton wrote:
>>>>> On Sun, 29 Jan 2023 10:44:31 +0800 Liu Shixin <liushixin2 at huawei.com> wrote:
>>>>>> On 2022/12/27 17:26, Liu Shixin wrote:
>>>>>>> After I add a 10GB pmem device, I got the following error message when
>>>>>>> insert module:
>>>>>>>
>>>>>>>  insmod: vmalloc error: size 16384, vm_struct allocation failed,
>>>>>>>  mode:0xcc0(GFP_KERNEL), nodemask=(null),cpuset=/,mems_allowed=0
>>>>>>>
>>>>>>> If CONFIG_RANDOMIZE_BASE is set, the module region can be located in the
>>>>>>> vmalloc region entirely. Although module_alloc() can fall back to a 2GB
>>>>>>> window if ARM64_MODULE_PLTS is set, the module region is still easily
>>>>>>> exhausted because the module region is located at bottom of vmalloc region
>>>>>>> and the vmalloc region is allocated from bottom to top.
>>>>>>>
>>>>>>> Skip module region if not calling from module_alloc().
>>>>>
>>>>> I'll assume this is for the arm tree.
>>>>>
>>>>> Acked-by: Andrew Morton <akpm at linux-foundation.org>
>>>>
>>>> This looks like the same issue previously reported at:
>>>>
>>>> https://lore.kernel.org/all/e6a804de-a5f7-c551-ffba-e09d04e438fc@hisilicon.com/
>>>>
>>>> where Ard had a few suggestions but, afaict, they didn't help.
>>>>
>>
>> Thanks for the cc.
>>
>> So this is a bit clunky, and I wonder whether we wouldn't be better
>> off just splitting the vmalloc region into two separate regions: one
>> for the kernel and modules, and one for everything else. That way, we
>> lose one bit of entropy in the randomized placement, but the default
>> 48-bit VA space is vast anway, and even on 39-bit VA configs (such as
>> Android), I seriously doubt that we come anywhere close to exhausting
>> the vmalloc space today.
> 
> That sounds like a good idea to me.
> 
> Liu Shixin -- do you think you could have a go at implementing Ard's
> suggestion instead?

Liu Shixin, did you ever look into realizing this idea?

Or was some progress already made and I just missed it?

I'm asking, as the idea discussed afaics is not only supposed to fix the
regression you tried to address, but also one that is now three months
old and stalled since Mid-December -- which is really unfortunate, as
that's not how regressions should be handled. :-/ But well, it afaik was
caused by a patch from Ard, so it's obviously not your job to address
it. But it seems you were working on it.

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)
--
Everything you wanna know about Linux kernel regression tracking:
https://linux-regtracking.leemhuis.info/about/#tldr
If I did something stupid, please tell me, as explained on that page.



More information about the linux-arm-kernel mailing list