[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <29cb13a4-e10d-a394-3c00-1d7721a2dc0a@gmail.com>
Date: Sat, 7 Nov 2020 20:54:13 -0800
From: Florian Fainelli <f.fainelli@...il.com>
To: Stefan Agner <stefan@...er.ch>,
Andrew Morton <akpm@...ux-foundation.org>
Cc: minchan@...nel.org, ngupta@...are.org,
sergey.senozhatsky.work@...il.com, sjenning@...ux.vnet.ibm.com,
gregkh@...uxfoundation.org, arnd@...db.de, linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH] mm/zsmalloc: include sparsemem.h for MAX_PHYSMEM_BITS
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@...er.ch> 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
Powered by blists - more mailing lists