Re: [PATCH v2] kmemleak: skip scanning holes in the .bss section

From: Michael Ellerman
Date: Wed Mar 20 2019 - 09:15:52 EST


Catalin Marinas <catalin.marinas@xxxxxxx> writes:
> Hi Qian,
>
> On Wed, Mar 13, 2019 at 10:57:17AM -0400, Qian Cai wrote:
>> @@ -1531,7 +1547,14 @@ static void kmemleak_scan(void)
>>
>> /* data/bss scanning */
>> scan_large_block(_sdata, _edata);
>> - scan_large_block(__bss_start, __bss_stop);
>> +
>> + if (bss_hole_start) {
>> + scan_large_block(__bss_start, bss_hole_start);
>> + scan_large_block(bss_hole_stop, __bss_stop);
>> + } else {
>> + scan_large_block(__bss_start, __bss_stop);
>> + }
>> +
>> scan_large_block(__start_ro_after_init, __end_ro_after_init);
>
> I'm not a fan of this approach but I couldn't come up with anything
> better. I was hoping we could check for PageReserved() in scan_block()
> but on arm64 it ends up not scanning the .bss at all.
>
> Until another user appears, I'm ok with this patch.
>
> Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx>

I actually would like to rework this kvm_tmp thing to not be in bss at
all. It's a bit of a hack and is incompatible with strict RWX.

If we size it a bit more conservatively we can hopefully just reserve
some space in the text section for it.

I'm not going to have time to work on that immediately though, so if
people want this fixed now then this patch could go in as a temporary
solution.

cheers