diff options
author | 2020-09-02 16:07:31 +0000 | |
---|---|---|
committer | 2020-09-02 16:07:31 +0000 | |
commit | bc7ce91c8672dede82c9fa5daa8a1c15fff505b0 (patch) | |
tree | 194aad7a3c3aaf440900ed0303e29259e5afd747 | |
parent | Add a -w flag to set- and load-buffer to send to clipboard using OSC 52. (diff) | |
download | wireguard-openbsd-bc7ce91c8672dede82c9fa5daa8a1c15fff505b0.tar.xz wireguard-openbsd-bc7ce91c8672dede82c9fa5daa8a1c15fff505b0.zip |
vfs_shutdown() is neccessary to ensure buffer cache drain before reexec()
ok kettenis visa
-rw-r--r-- | sys/arch/octeon/dev/octboot.c | 5 | ||||
-rw-r--r-- | sys/arch/powerpc64/dev/kexec.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/arch/octeon/dev/octboot.c b/sys/arch/octeon/dev/octboot.c index a55d5e75a61..2cfebcaba07 100644 --- a/sys/arch/octeon/dev/octboot.c +++ b/sys/arch/octeon/dev/octboot.c @@ -1,4 +1,4 @@ -/* $OpenBSD: octboot.c,v 1.3 2020/06/13 14:00:50 visa Exp $ */ +/* $OpenBSD: octboot.c,v 1.4 2020/09/02 16:07:33 deraadt Exp $ */ /* * Copyright (c) 2019-2020 Visa Hankala @@ -21,6 +21,7 @@ #include <sys/exec_elf.h> #include <sys/malloc.h> #include <sys/proc.h> +#include <sys/mount.h> #include <uvm/uvm_extern.h> @@ -295,6 +296,8 @@ octboot_kexec(struct octboot_kexec_args *kargs, struct proc *p) maxp += size; } + vfs_shutdown(p); + printf("launching kernel\n"); config_suspend_all(DVACT_POWERDOWN); diff --git a/sys/arch/powerpc64/dev/kexec.c b/sys/arch/powerpc64/dev/kexec.c index 00b0cd38317..8673cad3cfb 100644 --- a/sys/arch/powerpc64/dev/kexec.c +++ b/sys/arch/powerpc64/dev/kexec.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kexec.c,v 1.4 2020/08/29 09:17:17 kettenis Exp $ */ +/* $OpenBSD: kexec.c,v 1.5 2020/09/02 16:07:31 deraadt Exp $ */ /* * Copyright (c) 2019-2020 Visa Hankala @@ -22,6 +22,7 @@ #include <sys/exec_elf.h> #include <sys/malloc.h> #include <sys/proc.h> +#include <sys/mount.h> #include <sys/reboot.h> #include <uvm/uvm_extern.h> @@ -190,6 +191,8 @@ kexec_kexec(struct kexec_args *kargs, struct proc *p) if (error != 0) goto fail; + vfs_shutdown(p); + shp = (Elf64_Shdr *)(symaddr + eh.e_shoff); shstr = symaddr + shp[eh.e_shstrndx].sh_offset; for (i = 0; i < eh.e_shnum; i++) { |