aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/nvdimm/pmem.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index 845c5b430cdd..d9d845077b8b 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -281,16 +281,22 @@ static long pmem_dax_direct_access(struct dax_device *dax_dev,
281 return __pmem_direct_access(pmem, pgoff, nr_pages, kaddr, pfn); 281 return __pmem_direct_access(pmem, pgoff, nr_pages, kaddr, pfn);
282} 282}
283 283
284/*
285 * Use the 'no check' versions of copy_from_iter_flushcache() and
286 * copy_to_iter_mcsafe() to bypass HARDENED_USERCOPY overhead. Bounds
287 * checking, both file offset and device offset, is handled by
288 * dax_iomap_actor()
289 */
284static size_t pmem_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, 290static size_t pmem_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff,
285 void *addr, size_t bytes, struct iov_iter *i) 291 void *addr, size_t bytes, struct iov_iter *i)
286{ 292{
287 return copy_from_iter_flushcache(addr, bytes, i); 293 return _copy_from_iter_flushcache(addr, bytes, i);
288} 294}
289 295
290static size_t pmem_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff, 296static size_t pmem_copy_to_iter(struct dax_device *dax_dev, pgoff_t pgoff,
291 void *addr, size_t bytes, struct iov_iter *i) 297 void *addr, size_t bytes, struct iov_iter *i)
292{ 298{
293 return copy_to_iter_mcsafe(addr, bytes, i); 299 return _copy_to_iter_mcsafe(addr, bytes, i);
294} 300}
295 301
296static const struct dax_operations pmem_dax_ops = { 302static const struct dax_operations pmem_dax_ops = {