All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@ZenIV.linux.org.uk>
To: Matthew McClintock <mmcclint@codeaurora.org>
Cc: Larry Finger <Larry.Finger@lwfinger.net>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: Regression in 4.6.0-git - bisected to commit dd254f5a382c
Date: Wed, 25 May 2016 07:24:34 +0100	[thread overview]
Message-ID: <20160525062434.GE14480@ZenIV.linux.org.uk> (raw)
In-Reply-To: <20160524234133.GA14480@ZenIV.linux.org.uk>

On Wed, May 25, 2016 at 12:41:33AM +0100, Al Viro wrote:
> On Tue, May 24, 2016 at 05:31:51PM -0500, Matthew McClintock wrote:
> > 
> > > On May 24, 2016, at 2:36 PM, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> > > 
> > > On 05/24/2016 02:25 PM, Matthew McClintock wrote:
> > >> On May 24, 2016, at 2:16 PM, Larry Finger <Larry.Finger@lwfinger.net> wrote:
> > >>> 
> > >>> On 05/24/2016 02:13 PM, Matthew McClintock wrote:
> > >>>> I’m seeing this too, same commit if you want another person to test/reproduce.
> > >>> 
> > >>> If you do a pull today, does that fix your problem?
> > >> 
> > >> Hmm, no. Which commit am I looking for? I’m on a56f489502e28caac56c8a0735549740f0ae0711
> > > 
> > > Commit 84787c572d402644dca4874aba73324d9f8e3948 is working for me. I have a fixup in lib/iov_iter.c with a dump_stack() call if the fixup was needed. That dump is not triggered. I do not seem to have a56f489502e yet.
> > 
> > Still seeing the issue on top of tree and the above commit. Re-ran bisection just to be sure.
> 
> Guys, the bug is real and definitely still there.
> 	char c;
> 	struct iovec v[2] = {{&c, 0}, {&c, 1}};
> 	readv(0, v, 2);
> will trigger it just fine with stdin on e.g. tty.  It needs fixing and I'll
> post a fix as soon as it gets through the local testing.  In the meanwhile,
> I would like to know what in userland is doing that kind of call - kernel
> certainly shouldn't end up in an infinite loop on that, but it's bloody odd
> and I wonder what's going on in userland code to result in that call.
> 
> Again, I understand what's going on kernel-side; the only tricky part is how
> to fix it without bringing the nasal daemons back.  I think I have a solution
> and I'm going to post it tonight if it survives the local beating.  In any
> case, the testcase above deserves being added to LTP - it's a real regression.

FWIW, the reproducer is
#include <sys/uio.>
main()
{
	char c;
	struct iovec v[2] = {{&c,0},{&c,1}};
	readv(0, v, 2);
}
ran with stdin from tty.  Fix for that is simply

diff --git a/lib/iov_iter.c b/lib/iov_iter.c
index 28cb431..0cd5227 100644
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -101,7 +101,7 @@
 #define iterate_and_advance(i, n, v, I, B, K) {			\
 	if (unlikely(i->count < n))				\
 		n = i->count;					\
-	if (n) {						\
+	if (i->count) {						\
 		size_t skip = i->iov_offset;			\
 		if (unlikely(i->type & ITER_BVEC)) {		\
 			const struct bio_vec *bvec;		\

Could you see if your reproducer is fixed by that?

  parent reply	other threads:[~2016-05-25  6:24 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-23 21:30 Regression in 4.6.0-git - bisected to commit dd254f5a382c Larry Finger
2016-05-24  0:18 ` Al Viro
2016-05-24  2:55   ` Larry Finger
2016-05-24 16:10   ` Larry Finger
2016-05-24 16:28     ` Al Viro
2016-05-24 18:39       ` Larry Finger
2016-05-24 19:13     ` Matthew McClintock
2016-05-24 19:16       ` Larry Finger
2016-05-24 19:25         ` Matthew McClintock
2016-05-24 19:36           ` Larry Finger
2016-05-24 22:31             ` Matthew McClintock
2016-05-24 23:41               ` Al Viro
2016-05-25  0:58                 ` Matthew McClintock
2016-05-25  1:10                   ` Al Viro
2016-05-25  1:20                     ` Matthew McClintock
2016-05-25  1:28                       ` Al Viro
2016-05-25  2:06                         ` Matthew McClintock
2016-05-25  3:21                           ` Al Viro
2016-05-25  6:24                 ` Al Viro [this message]
2016-05-25 14:28                   ` Larry Finger
2016-05-25 15:27                   ` Matthew McClintock

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=20160525062434.GE14480@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=Larry.Finger@lwfinger.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmcclint@codeaurora.org \
    /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.