svn commit: r326362 - in head: share/man/man4 sys/net

Hartmann, O. o.hartmann at walstatt.org
Wed Nov 29 12:16:07 UTC 2017


On Wed, 29 Nov 2017 12:49:19 +0100
Hans Petter Selasky <hps at selasky.org> wrote:

> On 11/29/17 11:51, Hartmann, O. wrote:
> > On Wed, 29 Nov 2017 09:40:11 +0000 (UTC)
> > Hans Petter Selasky <hselasky at FreeBSD.org> wrote:
> >   
> >> Author: hselasky
> >> Date: Wed Nov 29 09:40:11 2017
> >> New Revision: 326362
> >> URL: https://svnweb.freebsd.org/changeset/base/326362
> >>
> >> Log:
> >>    Disallow TUN and TAP character device IOCTLs to modify the
> >> network device type to any value. This can cause page faults and
> >> panics due to accessing uninitialized fields in the "struct ifnet"
> >> which are specific to the network device type.
> >>    
> >>    MFC after:	1 week
> >>    Found by:	jau at iki.fi
> >>    PR:		223767
> >>    Sponsored by:	Mellanox Technologies
> >>
> >> Modified:
> >>    head/share/man/man4/tap.4
> >>    head/share/man/man4/tun.4
> >>    head/sys/net/if_tap.c
> >>    head/sys/net/if_tun.c
> >>
> >> Modified: head/share/man/man4/tap.4
> >> ==============================================================================
> >> --- head/share/man/man4/tap.4	Wed Nov 29 09:18:24 2017
> >> (r326361) +++ head/share/man/man4/tap.4	Wed Nov 29 09:40:11
> >> 2017	(r326362) @@ -1,7 +1,7 @@
> >>   .\" $FreeBSD$
> >>   .\" Based on PR#2411
> >>   .\"
> >> -.Dd April 10, 2015
> >> +.Dd November 29, 2017
> >>   .Dt TAP 4
> >>   .Os
> >>   .Sh NAME
> >> @@ -171,7 +171,14 @@ calls are supported
> >>   .In net/if_tap.h ) :
> >>   .Bl -tag -width VMIO_SIOCSETMACADDR
> >>   .It Dv TAPSIFINFO
> >> -Set network interface information (line speed, MTU and type).
> >> +Set network interface information (line speed and MTU).
> >> +The type must be the same as returned by
> >> +.Dv TAPGIFINFO
> >> +or set to
> >> +.Dv IFT_ETHER
> >> +else the
> >> +.Xr ioctl 2
> >> +call will fail.
> >>   The argument should be a pointer to a
> >>   .Va struct tapinfo .
> >>   .It Dv TAPGIFINFO
> >>
> >> Modified: head/share/man/man4/tun.4
> >> ==============================================================================
> >> --- head/share/man/man4/tun.4	Wed Nov 29 09:18:24 2017
> >> (r326361) +++ head/share/man/man4/tun.4	Wed Nov 29 09:40:11
> >> 2017	(r326362) @@ -2,7 +2,7 @@
> >>   .\" $FreeBSD$
> >>   .\" Based on PR#2411
> >>   .\"
> >> -.Dd November 30, 2014
> >> +.Dd November 29, 2017
> >>   .Dt TUN 4
> >>   .Os
> >>   .Sh NAME
> >> @@ -208,8 +208,15 @@ this stores the internal debugging variable's
> >> value in .It Dv TUNSIFINFO
> >>   The argument should be a pointer to an
> >>   .Vt struct tuninfo
> >> -and allows setting the MTU, the type, and the baudrate of the
> >> tunnel +and allows setting the MTU and the baudrate of the tunnel
> >>   device.
> >> +The type must be the same as returned by
> >> +.Dv TUNGIFINFO
> >> +or set to
> >> +.Dv IFT_PPP
> >> +else the
> >> +.Xr ioctl 2
> >> +call will fail.
> >>   The
> >>   .Vt struct tuninfo
> >>   is declared in
> >>
> >> Modified: head/sys/net/if_tap.c
> >> ==============================================================================
> >> --- head/sys/net/if_tap.c	Wed Nov 29 09:18:24 2017
> >> (r326361) +++ head/sys/net/if_tap.c	Wed Nov 29 09:40:11
> >> 2017	(r326362) @@ -737,9 +737,10 @@ tapioctl(struct cdev
> >> *dev, u_long cmd, caddr_t data, i switch (cmd) {
> >>   		case TAPSIFINFO:
> >>   			tapp = (struct tapinfo *)data;
> >> +			if (ifp->if_type != tapp->type)
> >> +				return (EPROTOTYPE);
> >>   			mtx_lock(&tp->tap_mtx);
> >>   			ifp->if_mtu = tapp->mtu;
> >> -			ifp->if_type = tapp->type;
> >>   			ifp->if_baudrate = tapp->baudrate;
> >>   			mtx_unlock(&tp->tap_mtx);
> >>   			break;
> >>
> >> Modified: head/sys/net/if_tun.c
> >> ==============================================================================
> >> --- head/sys/net/if_tun.c	Wed Nov 29 09:18:24 2017
> >> (r326361) +++ head/sys/net/if_tun.c	Wed Nov 29 09:40:11
> >> 2017	(r326362) @@ -676,9 +676,10 @@ tunioctl(struct cdev
> >> *dev, u_long cmd, caddr_t data, i if (error)
> >>   				return (error);
> >>   		}
> >> +		if (TUN2IFP(tp)->if_type != tunp->type)
> >> +			return (EPROTOTYPE);
> >>   		mtx_lock(&tp->tun_mtx);
> >>   		TUN2IFP(tp)->if_mtu = tunp->mtu;
> >> -		TUN2IFP(tp)->if_type = tunp->type;
> >>   		TUN2IFP(tp)->if_baudrate = tunp->baudrate;
> >>   		mtx_unlock(&tp->tun_mtx);
> >>   		break;
> >> _______________________________________________
> >> svn-src-head at freebsd.org mailing list
> >> https://lists.freebsd.org/mailman/listinfo/svn-src-head
> >> To unsubscribe, send any mail to
> >> "svn-src-head-unsubscribe at freebsd.org"  
> > 
> > after updating from r325893 to r326362, FreeBSD CURRENT crashes
> > while booting the kernel. I'm sorry having no further informations,
> > it happens on a laptop with reduced space.
> > 
> > At the moment, it seems that a lot of boxes running most recent
> > CURRENT tend to crash spontanously.
> >   
> 
> Hi,
> 
> And you built the kernel from scratch and made sure your source tree 
> does not contain any .o files nor /usr/obj/* .
> 
> --HPS

Last time I did the make cleandir was when the OFED driver problem
occured, that was some days ago. Useually, I build world and kernel
with WITH_META_MODE set.

Sinverely
oh


More information about the svn-src-all mailing list