Re: 8.0-BETA3 panic with vimage & lockd process

From: Julian Elischer <julian_at_elischer.org>
Date: Wed, 26 Aug 2009 10:25:38 -0700
subbsd wrote:
> Julian Elischer wrote:
>>> subbsd wrote:
>>>> Hello  maillist
>>>>
>>>> ive got sililar problem like http://lists.freebsd.org/pipermail/freebsd-
>>>> virtualization/2008-May/000010.html
>>>>
>>> is this -current or 8-beta3?  and if current, how new?
>>> _______________________________________________
>>> freebsd-current_at_freebsd.org mailing list
>>> http://lists.freebsd.org/mailman/listinfo/freebsd-current
>>> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"
>> sorry should have read hte subject line!
>>
>> any chance you can try a -current kernel?
>>
>> there are some fixes there that will go in to 8.x soon.
> 
> Yes, jumping to 
> 
> kern.osrelease: 9.0-CURRENT
> kern.osrevision: 199506
> 
> fix problem with lockd.
> 
> But net/skype (running without root privileges) application make kernel panic 
> anyway with VIMAGE options.
> ...
> 

ah intersting..
yes I can see what the problem is..
  thanks..

try the attached patch and get back to me..


Index: compat/linux/linux_ioctl.c
===================================================================
--- compat/linux/linux_ioctl.c	(revision 196425)
+++ compat/linux/linux_ioctl.c	(working copy)
_at__at_ -2067,16 +2067,20 _at__at_
 
 	/* Determine the (relative) unit number for ethernet interfaces */
 	ethno = 0;
+
+	CURVNET_SET(TD_TO_VNET(curthread));
 	IFNET_RLOCK();
 	TAILQ_FOREACH(ifscan, &V_ifnet, if_link) {
 		if (ifscan == ifp) {
 			IFNET_RUNLOCK();
+			CURVNET_RESTORE();
 			return (snprintf(buffer, buflen, "eth%d", ethno));
 		}
 		if (IFP_IS_ETH(ifscan))
 			ethno++;
 	}
 	IFNET_RUNLOCK();
+	CURVNET_RESTORE();
 
 	return (0);
 }
_at__at_ -2106,6 +2110,7 _at__at_
 		return (NULL);
 	index = 0;
 	is_eth = (len == 3 && !strncmp(lxname, "eth", len)) ? 1 : 0;
+	CURVNET_SET(TD_TO_VNET(curthread));
 	IFNET_RLOCK();
 	TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 		/*
_at__at_ -2119,6 +2124,7 _at__at_
 			break;
 	}
 	IFNET_RUNLOCK();
+	CURVNET_RESTORE();
 	if (ifp != NULL)
 		strlcpy(bsdname, ifp->if_xname, IFNAMSIZ);
 	return (ifp);
_at__at_ -2151,6 +2157,8 _at__at_
 	/* handle the 'request buffer size' case */
 	if (ifc.ifc_buf == PTROUT(NULL)) {
 		ifc.ifc_len = 0;
+		CURVNET_SET(TD_TO_VNET(curthread));
+		IFNET_RLOCK();
 		TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 			TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
 				struct sockaddr *sa = ifa->ifa_addr;
_at__at_ -2158,6 +2166,8 _at__at_
 					ifc.ifc_len += sizeof(ifr);
 			}
 		}
+		IFNET_RUNLOCK();
+		CURVNET_RESTORE();
 		error = copyout(&ifc, uifc, sizeof(ifc));
 		return (error);
 	}
_at__at_ -2177,6 +2187,7 _at__at_
 	valid_len = 0;
 
 	/* Return all AF_INET addresses of all interfaces */
+	CURVNET_SET(TD_TO_VNET(curthread));
 	IFNET_RLOCK();		/* could sleep XXX */
 	TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
 		int addrs = 0;
_at__at_ -2214,6 +2225,7 _at__at_
 		}
 	}
 	IFNET_RUNLOCK();
+	CURVNET_RESTORE();
 
 	if (valid_len != max_len && !full) {
 		sbuf_delete(sb);
Received on Wed Aug 26 2009 - 15:25:40 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:54 UTC