diff options
Diffstat (limited to 'arch/x86/kvm/i8259.c')
-rw-r--r-- | arch/x86/kvm/i8259.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/arch/x86/kvm/i8259.c b/arch/x86/kvm/i8259.c index e4bcbddecb36..daf4606b0293 100644 --- a/arch/x86/kvm/i8259.c +++ b/arch/x86/kvm/i8259.c | |||
@@ -539,6 +539,8 @@ static const struct kvm_io_device_ops picdev_ops = { | |||
539 | struct kvm_pic *kvm_create_pic(struct kvm *kvm) | 539 | struct kvm_pic *kvm_create_pic(struct kvm *kvm) |
540 | { | 540 | { |
541 | struct kvm_pic *s; | 541 | struct kvm_pic *s; |
542 | int ret; | ||
543 | |||
542 | s = kzalloc(sizeof(struct kvm_pic), GFP_KERNEL); | 544 | s = kzalloc(sizeof(struct kvm_pic), GFP_KERNEL); |
543 | if (!s) | 545 | if (!s) |
544 | return NULL; | 546 | return NULL; |
@@ -555,6 +557,11 @@ struct kvm_pic *kvm_create_pic(struct kvm *kvm) | |||
555 | * Initialize PIO device | 557 | * Initialize PIO device |
556 | */ | 558 | */ |
557 | kvm_iodevice_init(&s->dev, &picdev_ops); | 559 | kvm_iodevice_init(&s->dev, &picdev_ops); |
558 | kvm_io_bus_register_dev(kvm, &kvm->pio_bus, &s->dev); | 560 | ret = kvm_io_bus_register_dev(kvm, &kvm->pio_bus, &s->dev); |
561 | if (ret < 0) { | ||
562 | kfree(s); | ||
563 | return NULL; | ||
564 | } | ||
565 | |||
559 | return s; | 566 | return s; |
560 | } | 567 | } |