On 11/7/2020 5:16 PM, Stefan Agner wrote: > On 2020-11-08 01:56, Andrew Morton wrote: >> On Sat, 7 Nov 2020 16:22:06 +0100 Stefan Agner <stefan@xxxxxxxx> wrote: >> >>> Most architectures define MAX_PHYSMEM_BITS in asm/sparsemem.h and don't >>> include it in asm/pgtable.h. Include asm/sparsemem.h directly to get >>> the MAX_PHYSMEM_BITS define on all architectures. >>> >>> This fixes a crash when accessing zram on 32-bit ARM platform with LPAE and >>> more than 4GB of memory: >>> Unable to handle kernel NULL pointer dereference at virtual address 00000000 >> >> Mysterious. Presumably without this include, some compilation unit is >> picking up the wrong value of MAX_PHYSMEM_BITS? But I couldn't >> actually see where/how this occurs. Can you please explain further? > > Not sure if I got that right, but from what I understand if > MAX_PHYSMEM_BITS is not set in mm/zsmalloc.c it will set > MAX_PHYSMEM_BITS to BITS_PER_LONG. And this is 32-bit, too short when > LPAE is in use... You should probably include this in your commit message since that is describing the bug and then your fix makes complete sense. -- Florian