KVM: use after free in kvm_ioctl_create_device()
Subsystems (2)
PATCH 1/1 KVM: use after free in kvm_ioctl_create_device()
We should move the ops->destroy(dev) after the list_del(&dev->vm_node) so that we don't use "dev" after freeing it.
Fixes a28ebea2adc4 ("KVM: Protect device ops->create and list_add with kvm->lock")
Signed-off-by Dan Carpenter <[email protected]>
virt/kvm/kvm_main.c +1 -1
@@ -2899,10 +2899,10 @@ static int kvm_ioctl_create_device(struct kvm *kvm, ret =anon_inode_getfd (ops->name, &kvm_device_fops, dev,O_RDWR |O_CLOEXEC );if (ret <0 ) { - ops->destroy (dev);mutex_lock (&kvm->lock);list_del (&dev->vm_node);mutex_unlock (&kvm->lock); + ops->destroy (dev);return ret; }
Am 30.11.2016 um 20:21 schrieb Dan Carpenter:
virt/kvm/kvm_main.c static int kvm_ioctl_create_device(struct kvm *kvm,
Quoted 11 lines
We should move the
ops->destroy(dev)after thelist_del(&dev->vm_node)so that we don't use "dev" after freeing it.Fixes a28ebea2adc4 ("KVM: Protect device ops->create and list_add with kvm->lock")Signed-off-by Dan Carpenter <[email protected]>virt/kvm/kvm_main.c +0
-0@@ -2899,10 +2899,10 @@ static int kvm_ioctl_create_device(struct kvm *kvm,
Looks sane to me! This also matches kvm_destroy_devices().
Reviewed-by David Hildenbrand <[email protected]>
Signature · 1 line
David
Radim Krčmář
Applied2016-11-30 22:21+0300, Dan Carpenter:
Quoted 5 lines
We should move the
ops->destroy(dev)after thelist_del(&dev->vm_node)so that we don't use "dev" after freeing it.Fixes a28ebea2adc4 ("KVM: Protect device ops->create and list_add with kvm->lock")Signed-off-by Dan Carpenter <[email protected]>
Applied to kvm/master, thanks.