Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/net



Hi,

On Thu, Jan 26, 2017 at 09:13:19PM +0000, Nick Hudson wrote:
> @@ -534,14 +527,12 @@ tun_output(struct ifnet *ifp, struct mbu
>      const struct rtentry *rt)
>  {
>  	struct tun_softc *tp = ifp->if_softc;
> -	int		s;
>  	int		error;
>  #if defined(INET) || defined(INET6)
>  	int		mlen;
>  	uint32_t	*af;
>  #endif
>  
> -	s = splnet();
>  	mutex_enter(&tp->tun_lock);
>  	TUNDEBUG ("%s: tun_output\n", ifp->if_xname);
>  
> @@ -551,6 +542,8 @@ tun_output(struct ifnet *ifp, struct mbu
>  		error = EHOSTDOWN;
>  		goto out;
>  	}
> +	// XXXrmind
> +	mutex_exit(&tp->tun_lock);
>  
>  	/*
>  	 * if the queueing discipline needs packet classification,
> @@ -576,7 +569,7 @@ tun_output(struct ifnet *ifp, struct mbu
>  				error = ENOBUFS;
>  				goto out;
>  			}
> -			bcopy(dst, mtod(m0, char *), dst->sa_len);
> +			memcpy(mtod(m0, char *), dst, dst->sa_len);
>  		}
>  
>  		if (tp->tun_flags & TUN_IFHEAD) {
> @@ -617,9 +610,10 @@ tun_output(struct ifnet *ifp, struct mbu
>  		goto out;
>  	}
>  
> +	mutex_enter(&tp->tun_lock);

you call goto out; with &tp->tun-lock not held, it then
mutex_exits it.


Home | Main Index | Thread Index | Old Index