On Tue, 15 Sep 2020, Mikulas Patocka wrote: > > > On Tue, 15 Sep 2020, Mikulas Patocka wrote: > > > > > - __copy_from_user_inatomic_nocache doesn't flush cache for leading and > > > > trailing bytes. > > > > > > You want copy_user_flushcache(). See how fs/dax.c arranges for > > > dax_copy_from_iter() to route to pmem_copy_from_iter(). > > > > Is it something new for the kernel 5.10? I see only __copy_user_flushcache > > that is implemented just for x86 and arm64. > > > > There is __copy_from_user_flushcache implemented for x86, arm64 and power. > > It is used in lib/iov_iter.c under > > #ifdef CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE - so should I use this? > > > > Mikulas > > ... and __copy_user_flushcache is not exported for modules. So, I am stuck > with __copy_from_user_inatomic_nocache. > > Mikulas I'm submitting this patch that adds the required exports (so that we could use __copy_from_user_flushcache on x86, arm64 and powerpc). Please, queue it for the next merge window. From: Mikulas Patocka <mpatocka@xxxxxxxxxx> Export the symbols __copy_user_flushcache and __copy_from_user_flushcache, so that modules can use this functionality. Signed-off-by: Mikulas Patocka <mpatocka@xxxxxxxxxx> --- arch/arm64/lib/uaccess_flushcache.c | 1 + arch/powerpc/lib/pmem.c | 1 + arch/x86/lib/usercopy_64.c | 1 + 3 files changed, 3 insertions(+) Index: linux-2.6/arch/arm64/lib/uaccess_flushcache.c =================================================================== --- linux-2.6.orig/arch/arm64/lib/uaccess_flushcache.c 2020-09-16 12:44:15.068038000 +0200 +++ linux-2.6/arch/arm64/lib/uaccess_flushcache.c 2020-09-16 12:44:15.068038000 +0200 @@ -38,3 +38,4 @@ unsigned long __copy_user_flushcache(voi __clean_dcache_area_pop(to, n - rc); return rc; } +EXPORT_SYMBOL_GPL(__copy_user_flushcache); Index: linux-2.6/arch/x86/lib/usercopy_64.c =================================================================== --- linux-2.6.orig/arch/x86/lib/usercopy_64.c 2020-09-16 12:44:15.068038000 +0200 +++ linux-2.6/arch/x86/lib/usercopy_64.c 2020-09-16 12:44:15.068038000 +0200 @@ -134,6 +134,7 @@ long __copy_user_flushcache(void *dst, c return rc; } +EXPORT_SYMBOL_GPL(__copy_user_flushcache); void __memcpy_flushcache(void *_dst, const void *_src, size_t size) { Index: linux-2.6/arch/powerpc/lib/pmem.c =================================================================== --- linux-2.6.orig/arch/powerpc/lib/pmem.c 2020-09-16 12:44:15.068038000 +0200 +++ linux-2.6/arch/powerpc/lib/pmem.c 2020-09-16 12:44:15.068038000 +0200 @@ -75,6 +75,7 @@ long __copy_from_user_flushcache(void *d return copied; } +EXPORT_SYMBOL_GPL(__copy_from_user_flushcache); void memcpy_flushcache(void *dest, const void *src, size_t size) {