lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <20220302174321.326189-1-pbonzini@redhat.com> Date: Wed, 2 Mar 2022 12:43:21 -0500 From: Paolo Bonzini <pbonzini@...hat.com> To: linux-kernel@...r.kernel.org, kvm@...r.kernel.org Cc: dmatlack@...gle.com, seanjc@...gle.com Subject: [PATCH] KVM: allow struct kvm to outlive the file descriptors Right now, the kvm module is kept alive by VFS via fops_get/fops_put, but there may be cases in which a kvm_get_kvm's matching kvm_put_kvm happens after the file descriptor is closed. One case that will be introduced soon is when work is delegated to the system work queue; the worker might be a bit late and the file descriptor can be closed in the meantime. Ensure that the module has not gone away by tying a module reference explicitly to the lifetime of the struct kvm. Signed-off-by: Paolo Bonzini <pbonzini@...hat.com> --- virt/kvm/kvm_main.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 64eb99444688..e3f37fc2ebf1 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -1131,6 +1131,9 @@ static struct kvm *kvm_create_vm(unsigned long type) preempt_notifier_inc(); kvm_init_pm_notifier(kvm); + /* This is safe, since we have a reference from open(). */ + __module_get(THIS_MODULE); + return kvm; out_err: @@ -1220,6 +1223,7 @@ static void kvm_destroy_vm(struct kvm *kvm) preempt_notifier_dec(); hardware_disable_all(); mmdrop(mm); + module_put(THIS_MODULE); } void kvm_get_kvm(struct kvm *kvm) -- 2.31.1
Powered by blists - more mailing lists