Dan Williams 60622d6822 x86/asm/memcpy_mcsafe: Return bytes remaining
Machine check safe memory copies are currently deployed in the pmem
driver whenever reading from persistent memory media, so that -EIO is
returned rather than triggering a kernel panic. While this protects most
pmem accesses, it is not complete in the filesystem-dax case. When
filesystem-dax is enabled reads may bypass the block layer and the
driver via dax_iomap_actor() and its usage of copy_to_iter().

In preparation for creating a copy_to_iter() variant that can handle
machine checks, teach memcpy_mcsafe() to return the number of bytes
remaining rather than -EFAULT when an exception occurs.

Co-developed-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: hch@lst.de
Cc: linux-fsdevel@vger.kernel.org
Cc: linux-nvdimm@lists.01.org
Link: http://lkml.kernel.org/r/152539238119.31796.14318473522414462886.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2018-05-15 08:32:42 +02:00
..
2018-04-26 11:06:36 -07:00
2018-04-27 10:12:20 -07:00
2018-04-19 15:11:50 -07:00
2018-04-10 12:14:37 -07:00
2018-04-04 20:07:20 -07:00
2018-03-27 09:51:22 +02:00
2018-04-09 11:42:31 -07:00
2018-04-04 20:07:20 -07:00
2018-04-27 14:12:43 +02:00
2018-04-05 14:27:02 -07:00
2018-05-04 20:51:10 -10:00
2018-04-12 21:46:10 -04:00
2018-04-07 12:08:19 -07:00
2018-04-18 23:37:25 -04:00
2018-04-20 10:41:31 -07:00
2018-04-04 20:07:20 -07:00
2018-05-07 05:33:29 -10:00
2018-05-02 21:47:35 +02:00
2018-04-04 20:07:20 -07:00
2018-04-05 21:29:35 -07:00
2018-04-05 21:21:08 -07:00
2018-04-05 21:21:08 -07:00
2018-04-13 15:46:21 -07:00
2018-04-03 12:06:21 -07:00
2018-05-04 14:38:32 -07:00
2018-04-06 19:44:27 -07:00
2018-04-10 10:20:00 -07:00
2018-04-11 18:58:27 -07:00
2018-03-29 13:38:10 +03:00