Stop uuidgen(2) from crashing in vimage kerenels.

make curvnet valid when needed.

Reviewed by:	bz@
Approved by:	re (kib)
This commit is contained in:
Julian Elischer 2009-08-02 16:59:02 +00:00
parent 444b91868b
commit 9734411552
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=196038

View File

@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
#include <sys/socket.h>
#include <sys/sysproto.h>
#include <sys/systm.h>
#include <sys/jail.h>
#include <sys/uuid.h>
#include <net/if.h>
@ -93,6 +94,7 @@ uuid_node(uint16_t *node)
struct sockaddr_dl *sdl;
int i;
CURVNET_SET(TD_TO_VNET(curthread));
IFNET_RLOCK();
TAILQ_FOREACH(ifp, &V_ifnet, if_link) {
/* Walk the address list */
@ -105,6 +107,7 @@ uuid_node(uint16_t *node)
bcopy(LLADDR(sdl), node, UUID_NODE_LEN);
IF_ADDR_UNLOCK(ifp);
IFNET_RUNLOCK();
CURVNET_RESTORE();
return;
}
}
@ -115,6 +118,7 @@ uuid_node(uint16_t *node)
for (i = 0; i < (UUID_NODE_LEN>>1); i++)
node[i] = (uint16_t)arc4random();
*((uint8_t*)node) |= 0x01;
CURVNET_RESTORE();
}
/*