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:
parent
444b91868b
commit
9734411552
@ -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();
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user