Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jul 1999 03:52:56 +0100
From:      Brian Somers <brian@Awfulhak.org>
To:        Maxim Sobolev <sobomax@altavista.net>
Cc:        current@freebsd.org, brian@freebsd.org, jmg@freebsd.org
Subject:   Re: [Fwd: Tun interface related panic] 
Message-ID:  <199907240252.DAA03879@keep.lan.Awfulhak.org>
In-Reply-To: Your message of "Sat, 24 Jul 1999 01:29:05 %2B0300." <3798ECB1.2AE159E2@altavista.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
Ok, I found the culprit in ppp.  I'm committing a change now.

Thanks for the report !

> Hi folks,
> 
> It seems that in some specific conditions user level ppp (PPP Version
> 2.22 - $Date: 1999/06/23 16:48:19 $) trying to incorrectly write to the
> tun device causing a panic if revision prior to 1.61 (current) or
> 1.51.2.1 (stable) of if_tun.c is used. In this tun revisions some belts
> against this undesirable behavior has been introduced, but all oldest
> kernels are potentially affected. In my conditions this was a 100%
> reproducible crash (now it is less harmful - just a message like "Error:
> ip_Input: deflink: wrote 0, got Input/output error" in the ppp log) but
> someone using oldest kernel with this revision of ppp can got his
> machine crashed. Following our last mailing related to this bug (it was
> in the -stable list because I discovered this panic on my -stable box).
> For more info look for the subject in the -stable list or contact me by
> e-mail.
> 
> -Maxim
> 
> Alfred Perlstein wrote:
> 
> > On Fri, 23 Jul 1999, Maxim Sobolev wrote:
> >
> > > Alfred Perlstein wrote:
> > >
> > > > [Piece of debug print skipped....]
> > > > oops, ok, I wasn't clear, I need to know the contents of the structs
> > > > that those pointers point to, try this:
> > > >
> > > > print *uio
> > > > print *top
> > > > print **mp
> > > >
> > > > in, the meanwhile, try this patch:
> > > >
> > > > cvs diff: Diffing .
> > > > Index: if_tun.c
> > > > ===================================================================
> > > > RCS file: /home/ncvs/src/sys/net/if_tun.c,v
> > > > retrieving revision 1.51
> > > > diff -u -r1.51 if_tun.c
> > > > --- if_tun.c    1999/01/17 20:53:47     1.51
> > > > +++ if_tun.c    1999/07/23 20:42:34
> > > > @@ -521,7 +521,7 @@
> > > >
> > > >         TUNDEBUG("%s%d: tunwrite\n", ifp->if_name, ifp->if_unit);
> > > >
> > > > -       if (uio->uio_resid < 0 || uio->uio_resid > TUNMRU) {
> > > > +       if (uio->uio_resid <= 0 || uio->uio_resid > TUNMRU) {
> > > >                 TUNDEBUG("%s%d: len=%d!\n", ifp->if_name, ifp->if_unit,
> > > >                     uio->uio_resid);
> > > >                 return EIO;
> > > >
> > > > please please tell me if it works for you so I can file a proper PR.
> > >
> > > Yeah! It works! It seems that I'm the one who have detected this problem because
> > > I'm using latest ppp snapshot instead of standard one. I just tested ppp from
> > > -stable and discovered that it doesn't make this panic (version of libalias doesn't
> > > matter though). However it would be great if you can commit this patch because new
> > > version of ppp have some really nice features on which I rely hardly. This also
> > > rising a question to the Brian Somers or any other who can look and find what is
> > > wrong with the current ppp (PPP Version 2.22 - $Date: 1999/06/23 16:48:19 $).
> > > Anyway, to have some belts in the kernel should not make any harm. Following is the
> > > ppp output which probably before your patch would kill my box (I never seen this
> > > message before - so to speak..):
> > >
> > > TCP/IP: IN UDP: 208.147.89.229:18422 ---> 192.168.1.1:7070
> > > Error: ip_Input: deflink: wrote 0, got Input/output error
> >
> > I don't work on ppp, you should be sure Brian is notified of this problem.
> > I appreciate your help in tracking this down, the patch has been put into
> > -stable and -current for it.
> >
> > >
> > > If you still want to see prints, you can see it at the end of this message.
> > > (kgdb) up
> > > #5  0xc01630f9 in tunwrite (dev=13312, uio=0xc2d15f14, flag=1)
> > >     at ../../net/if_tun.c:559
> > > 559  top->m_pkthdr.len = tlen;
> > > (kgdb) print *uio
> > > $1 = {uio_iov = 0xc2d15f0c, uio_iovcnt = 1, uio_offset = 38962, uio_resid = 0,
> > >   uio_segflg = UIO_USERSPACE, uio_rw = UIO_WRITE, uio_procp = 0xc2cc32e0}
> > > (kgdb) print *top
> > > Cannot access memory at address 0x0.
> > > (kgdb) print **mp
> >
> > perfect, they were extremely helpful in tracking down this problem, I
> > assumed that uio->res_id was zero ( it was the only thing that made sense)
> > however I just needed to verify.
> >
> > >
> > > In the case if my assistance in debugging ppp will be necessary please let me know.
> >
> > Talk to Brian.
> >
> > hrm, also can you fix your mailer to wrap at 70 chars?
> >
> > -Alfred

-- 
Brian <brian@Awfulhak.org>                        <brian@FreeBSD.org>
      <http://www.Awfulhak.org>;                   <brian@OpenBSD.org>
Don't _EVER_ lose your sense of humour !          <brian@FreeBSD.org.uk>




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199907240252.DAA03879>