Dan Williams
2019-Jun-17 19:02 UTC
[Nouveau] [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages
On Mon, Jun 17, 2019 at 5:27 AM Christoph Hellwig <hch at lst.de> wrote:> > Most pgmap types are only supported when certain config options are > enabled. Check for a type that is valid for the current configuration > before setting up the pagemap. > > Signed-off-by: Christoph Hellwig <hch at lst.de> > --- > kernel/memremap.c | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/kernel/memremap.c b/kernel/memremap.c > index 6e1970719dc2..6a2dd31a6250 100644 > --- a/kernel/memremap.c > +++ b/kernel/memremap.c > @@ -157,6 +157,33 @@ void *devm_memremap_pages(struct device *dev, struct dev_pagemap *pgmap) > pgprot_t pgprot = PAGE_KERNEL; > int error, nid, is_ram; > > + switch (pgmap->type) { > + case MEMORY_DEVICE_PRIVATE: > + if (!IS_ENABLED(CONFIG_DEVICE_PRIVATE)) { > + WARN(1, "Device private memory not supported\n"); > + return ERR_PTR(-EINVAL); > + } > + break; > + case MEMORY_DEVICE_PUBLIC: > + if (!IS_ENABLED(CONFIG_DEVICE_PUBLIC)) { > + WARN(1, "Device public memory not supported\n"); > + return ERR_PTR(-EINVAL); > + } > + break; > + case MEMORY_DEVICE_FS_DAX: > + if (!IS_ENABLED(CONFIG_ZONE_DEVICE) || > + IS_ENABLED(CONFIG_FS_DAX_LIMITED)) { > + WARN(1, "File system DAX not supported\n"); > + return ERR_PTR(-EINVAL); > + } > + break; > + case MEMORY_DEVICE_PCI_P2PDMA:Need a lead in patch that introduces MEMORY_DEVICE_DEVDAX, otherwise: Invalid pgmap type 0 WARNING: CPU: 6 PID: 1316 at kernel/memremap.c:183 devm_memremap_pages+0x1d8/0x700 [..] RIP: 0010:devm_memremap_pages+0x1d8/0x700 [..] Call Trace: dev_dax_probe+0xc7/0x1e0 [device_dax] really_probe+0xef/0x390 driver_probe_device+0xb4/0x100 device_driver_attach+0x4f/0x60
Christoph Hellwig
2019-Jun-17 19:54 UTC
[Nouveau] [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages
On Mon, Jun 17, 2019 at 12:02:09PM -0700, Dan Williams wrote:> Need a lead in patch that introduces MEMORY_DEVICE_DEVDAX, otherwise:Or maybe a MEMORY_DEVICE_DEFAULT = 0 shared by fsdax and p2pdma?
Dan Williams
2019-Jun-17 20:36 UTC
[Nouveau] [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages
On Mon, Jun 17, 2019 at 12:59 PM Christoph Hellwig <hch at lst.de> wrote:> > On Mon, Jun 17, 2019 at 12:02:09PM -0700, Dan Williams wrote: > > Need a lead in patch that introduces MEMORY_DEVICE_DEVDAX, otherwise: > > Or maybe a MEMORY_DEVICE_DEFAULT = 0 shared by fsdax and p2pdma?I thought about that, but it seems is_pci_p2pdma_page() needs the distinction between the 2 types.
Possibly Parallel Threads
- [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages
- [PATCH 08/25] memremap: validate the pagemap type passed to devm_memremap_pages
- [PATCH 07/25] memremap: validate the pagemap type passed to devm_memremap_pages
- [PATCH 07/22] memremap: move dev_pagemap callbacks into a separate structure
- [PATCH 08/25] memremap: move dev_pagemap callbacks into a separate structure