[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20161008182903.GU19539@ZenIV.linux.org.uk>
Date: Sat, 8 Oct 2016 19:29:03 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: Dave Jones <davej@...emonkey.org.uk>, Chris Mason <clm@...com>,
Josef Bacik <jbacik@...com>, David Sterba <dsterba@...e.com>,
linux-btrfs@...r.kernel.org,
Linux Kernel <linux-kernel@...r.kernel.org>
Subject: Re: btrfs_direct_IO oops
On Sat, Oct 08, 2016 at 02:08:06PM -0400, Dave Jones wrote:
> That code: matches this dissembly:
>
> for (i = seg + 1; i < iter->nr_segs; i++) {
*whoa*
OK, that loop in check_direct_IO() should be done *ONLY* for
iovec iter - even for a bvec one it's completely bogus, and
for pipe ones it blows up immediately.
Sorry, I'd missed that bogosity - replace
if (iov_iter_rw(iter) == WRITE)
return 0;
with
if (iov_iter_rw(iter) != READ || !iter_is_iovec(iter))
return 0;
in there; that should fix the damn thing.
Powered by blists - more mailing lists