1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00

Mfp4 CH=177256:

Catch a set vnet upon return to user space. This usually
  means return paths with CURVNET_RESTORE() missing.

  If VNET_DEBUG is turned on we can even tell the function
  that did the CURVNET_SET() which is really helpful; else
  we print "N/A".

  Sponsored by: The FreeBSD Foundation
  Sponsored by: CK Software GmbH
  Reviewed by:  jhb

MFC after:	11 days
This commit is contained in:
Bjoern A. Zeeb 2011-02-14 20:49:37 +00:00
parent f6c05906ee
commit bf9ce95bd2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=218688

View File

@ -74,6 +74,10 @@ __FBSDID("$FreeBSD$");
#include <machine/cpu.h>
#ifdef VIMAGE
#include <net/vnet.h>
#endif
#ifdef XEN
#include <vm/vm.h>
#include <vm/vm_param.h>
@ -126,6 +130,13 @@ userret(struct thread *td, struct trapframe *frame)
sched_userret(td);
KASSERT(td->td_locks == 0,
("userret: Returning with %d locks held.", td->td_locks));
#ifdef VIMAGE
/* Unfortunately td_vnet_lpush needs VNET_DEBUG. */
VNET_ASSERT(curvnet == NULL,
("%s: Returning on td %p (pid %d, %s) with vnet %p set in %s",
__func__, td, p->p_pid, td->td_name, curvnet,
(td->td_vnet_lpush != NULL) ? td->td_vnet_lpush : "N/A"));
#endif
#ifdef XEN
PT_UPDATES_FLUSH();
#endif