diff options
author | Christoph Hellwig <hch@lst.de> | 2019-06-26 14:27:10 +0200 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2019-07-02 19:32:44 +0200 |
commit | f6a55e1a3fe6b3bb294a80a05437fcf86488d819 (patch) | |
tree | c7939245cd5d9437e8bfdc127244b89b8db0b044 /mm/hmm.c | |
parent | memremap: pass a struct dev_pagemap to ->kill and ->cleanup (diff) | |
download | linux-f6a55e1a3fe6b3bb294a80a05437fcf86488d819.tar.xz linux-f6a55e1a3fe6b3bb294a80a05437fcf86488d819.zip |
memremap: lift the devmap_enable manipulation into devm_memremap_pages
Just check if there is a ->page_free operation set and take care of the
static key enable, as well as the put using device managed resources.
Also check that a ->page_free is provided for the pgmaps types that
require it, and check for a valid type as well while we are at it.
Note that this also fixes the fact that hmm never called
dev_pagemap_put_ops and thus would leave the slow path enabled forever,
even after a device driver unload or disable.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Tested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Diffstat (limited to 'mm/hmm.c')
-rw-r--r-- | mm/hmm.c | 2 |
1 files changed, 0 insertions, 2 deletions
@@ -1415,8 +1415,6 @@ struct hmm_devmem *hmm_devmem_add(const struct hmm_devmem_ops *ops, void *result; int ret; - dev_pagemap_get_ops(); - devmem = devm_kzalloc(device, sizeof(*devmem), GFP_KERNEL); if (!devmem) return ERR_PTR(-ENOMEM); |