[kvmtool PATCH] net: Use vfork() instead of fork() for script execution

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

 



When a script is specified for a guest nic setup, we fork() and execl()s
the script when it is time to execute the script. However this is not
optimal, given we are running a VM. The fork() will trigger marking the
entire page-table of the current process as CoW, which will trigger
unmapping the entire stage2 page tables from the guest. Anyway, the
child process will exec the script as soon as we fork(), making all
these mm operations moot. Also, this operation could be problematic
for confidential compute VMs, where it may be expensive (and sometimes
destructive) to make changes to the stage2 page tables.

So, instead we could use vfork() and avoid the CoW and unmap of the stage2.

Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
---
 virtio/net.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/virtio/net.c b/virtio/net.c
index c4e302bd..a5e0cea5 100644
--- a/virtio/net.c
+++ b/virtio/net.c
@@ -295,7 +295,7 @@ static int virtio_net_exec_script(const char* script, const char *tap_name)
 	pid_t pid;
 	int status;
 
-	pid = fork();
+	pid = vfork();
 	if (pid == 0) {
 		execl(script, script, tap_name, NULL);
 		_exit(1);
-- 
2.37.1




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux