[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190522.104019.40493905027242516.davem@davemloft.net>
Date: Wed, 22 May 2019 10:40:19 -0700 (PDT)
From: David Miller <davem@...emloft.net>
To: rick.p.edgecombe@...el.com
Cc: linux-kernel@...r.kernel.org, peterz@...radead.org,
linux-mm@...ck.org, mroos@...ux.ee, mingo@...hat.com,
namit@...are.com, luto@...nel.org, bp@...en8.de,
netdev@...r.kernel.org, dave.hansen@...el.com,
sparclinux@...r.kernel.org
Subject: Re: [PATCH v2] vmalloc: Fix issues with flush flag
From: "Edgecombe, Rick P" <rick.p.edgecombe@...el.com>
Date: Tue, 21 May 2019 01:59:54 +0000
> On Mon, 2019-05-20 at 18:43 -0700, David Miller wrote:
>> From: "Edgecombe, Rick P" <rick.p.edgecombe@...el.com>
>> Date: Tue, 21 May 2019 01:20:33 +0000
>>
>> > Should it handle executing an unmapped page gracefully? Because
>> > this
>> > change is causing that to happen much earlier. If something was
>> > relying
>> > on a cached translation to execute something it could find the
>> > mapping
>> > disappear.
>>
>> Does this work by not mapping any kernel mappings at the beginning,
>> and then filling in the BPF mappings in response to faults?
> No, nothing too fancy. It just flushes the vm mapping immediatly in
> vfree for execute (and RO) mappings. The only thing that happens around
> allocation time is setting of a new flag to tell vmalloc to do the
> flush.
>
> The problem before was that the pages would be freed before the execute
> mapping was flushed. So then when the pages got recycled, random,
> sometimes coming from userspace, data would be mapped as executable in
> the kernel by the un-flushed tlb entries.
If I am to understand things correctly, there was a case where 'end'
could be smaller than 'start' when doing a range flush. That would
definitely kill some of the sparc64 TLB flush routines.
Powered by blists - more mailing lists