From: Ross Zwisler <ross.zwisler@linux.intel.com>
To: Dan Williams <dan.j.williams@intel.com>
Cc: mingo@kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
Andrew Morton <akpm@linux-foundation.org>,
Andy Lutomirski <luto@amacapital.net>,
Borislav Petkov <bp@alien8.de>,
Linus Torvalds <torvalds@linux-foundation.org>,
Peter Zijlstra <peterz@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Tony Luck <tony.luck@intel.com>,
Ross Zwisler <ross.zwisler@linux.intel.com>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH] lib/iov_iter: Fix pipe handling in _copy_to_iter_mcsafe
Date: Mon, 2 Jul 2018 10:58:03 -0600 [thread overview]
Message-ID: <20180702165803.GB19488@linux.intel.com> (raw)
In-Reply-To: <153046008813.2019.6356018879675062644.stgit@dwillia2-desk3.amr.corp.intel.com>
On Sun, Jul 01, 2018 at 08:52:20AM -0700, Dan Williams wrote:
> By mistake the ITER_PIPE early-exit / warning from copy_from_iter() was
> cargo-culted in _copy_to_iter_mcsafe() rather than a machine-check-safe
> version of copy_to_iter_pipe().
>
> Implement copy_pipe_to_iter_mcsafe() being careful to return the
> indication of short copies due to a CPU exception.
>
> Without this regression-fix all splice reads to dax-mode files fail.
>
> Fixes: 8780356ef630 ("x86/asm/memcpy_mcsafe: Define copy_to_iter_mcsafe()")
> 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>
> Reported-by: Ross Zwisler <ross.zwisler@linux.intel.com>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
> ---
> Hi Ingo,
>
> I'm submitting this fix back through the tip tree since the regression
> originated through tip/x86/dax.
>
> lib/iov_iter.c | 37 +++++++++++++++++++++++++++++++++----
> 1 file changed, 33 insertions(+), 4 deletions(-)
Hey Dan,
I retested the current linux/master with this patch applied, and XFS + DAX +
generic/323 still dies for me:
run fstests generic/323 at 2018-07-02 10:51:35
BUG: unable to handle kernel paging request at 00007f16dc001000
PGD 80000000bb71a067 P4D 80000000bb71a067 PUD bb71b067 PMD bb6e8067 PTE 0
Oops: 0002 [#1] PREEMPT SMP PTI
CPU: 1 PID: 1598 Comm: aio-last-ref-he Not tainted
4.18.0-rc3-00001-g5174f2f2b6e5 #2
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.11.1-0-g0551a4be2c-prebuilt.qemu-project.org 04/01/2014
RIP: 0010:__memcpy+0x12/0x20
Code: c3 e8 42 fb ff ff 48 8b 43 60 48 2b 43 50 88 43 4e 5b 5d c3 90 90 90
90 0f 1f 44 00 00 48 89 f8 48 89 d1 48 c1 e9 03 83 e2 07 <f3> 48 a5 89 d1 f3
a4 c3 66 0f 1f 44 00 00 48 89 f8 48 89 d1 f3 a4
RSP: 0018:ffffc90002783a60 EFLAGS: 00010246
RAX: 00007f16dc001000 RBX: ffff880151229000 RCX: 0000000000002000
RDX: 0000000000000000 RSI: ffff880151219000 RDI: 00007f16dc001000
RBP: ffffc90002783a68 R08: 0000004227a4083c R09: ffff880151219000
R10: ffffc90002783d40 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000010000 R14: ffffc90002783d18 R15: 0000000000010000
FS: 00007f16f1ec5700(0000) GS:ffff880114600000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f16dc001000 CR3: 0000000035508000 CR4: 00000000000006e0
Call Trace:
? copyout_mcsafe+0x3e/0x60
_copy_to_iter_mcsafe+0x9e/0x4c0
? __lock_is_held+0x65/0xb0
pmem_copy_to_iter+0x17/0x20 [nd_pmem]
dax_copy_to_iter+0x49/0x70
dax_iomap_actor+0x1f8/0x280
? dax_iomap_rw+0x100/0x100
iomap_apply+0xb5/0x130
? dax_iomap_rw+0x100/0x100
dax_iomap_rw+0x95/0x100
? dax_iomap_rw+0x100/0x100
xfs_file_dax_read+0x83/0x1f0
xfs_file_read_iter+0xac/0xc0
aio_read+0x11f/0x1a0
? __might_fault+0x3e/0x90
io_submit_one+0x39d/0x5f0
? io_submit_one+0x39d/0x5f0
__x64_sys_io_submit+0xa1/0x280
do_syscall_64+0x65/0x220
? do_syscall_64+0x65/0x220
entry_SYSCALL_64_after_hwframe+0x49/0xbe
This failure looks identical to what I was hitting with the original bug
report.
- Ross
next prev parent reply other threads:[~2018-07-02 16:58 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-01 15:52 [PATCH] lib/iov_iter: Fix pipe handling in _copy_to_iter_mcsafe Dan Williams
2018-07-02 16:58 ` Ross Zwisler [this message]
2018-07-02 17:17 ` Dan Williams
2018-07-02 21:16 ` [PATCH] x86/asm/memcpy_mcsafe: Fix copy_to_user_mcsafe() exception handling Dan Williams
2018-07-03 8:30 ` Ingo Molnar
2018-07-04 22:38 ` Al Viro
2018-07-04 23:02 ` Dan Williams
2018-07-05 7:02 ` Ingo Molnar
2018-07-03 16:47 ` Ross Zwisler
2018-07-03 16:47 ` [PATCH] lib/iov_iter: Fix pipe handling in _copy_to_iter_mcsafe Ross Zwisler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180702165803.GB19488@linux.intel.com \
--to=ross.zwisler@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=bp@alien8.de \
--cc=dan.j.williams@intel.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.