Re: [KVM PATCH v4 2/2] kvm: add support for irqfd via eventfd-notificationinterface

From: Gregory Haskins
Date: Tue May 05 2009 - 13:35:04 EST


Avi Kivity wrote:
> Gregory Haskins wrote:
>> KVM provides a complete virtual system environment for guests, including
>> support for injecting interrupts modeled after the real
>> exception/interrupt
>> facilities present on the native platform (such as the IDT on x86).
>> Virtual interrupts can come from a variety of sources (emulated devices,
>> pass-through devices, etc) but all must be injected to the guest via
>> the KVM infrastructure. This patch adds a new mechanism to inject a
>> specific
>> interrupt to a guest using a decoupled eventfd mechnanism: Any legal
>> signal
>> on the irqfd (using eventfd semantics from either userspace or
>> kernel) will
>> translate into an injected interrupt in the guest at the next available
>> interrupt window.
>>
>>
>> +struct kvm_irqfd {
>> + __u32 gsi;
>> + __u32 flags;
>> +};
>> +
>>
>
> Please add some reserved space here.

Ack. Any rule of thumb here? How about a "__u8 pad[16]" ?

>
>> +int
>> +kvm_irqfd(struct kvm *kvm, int gsi, int flags)
>> +{
>> + struct _irqfd *irqfd;
>> + struct file *file = NULL;
>> + int fd = -1;
>> + int ret;
>> +
>> + irqfd = kzalloc(sizeof(*irqfd), GFP_KERNEL);
>> + if (!irqfd)
>> + return -ENOMEM;
>> +
>> + irqfd->kvm = kvm;
>>
>
> You need to increase the refcount on struct kvm here. Otherwise evil
> userspace will create an irqfd, close the vm and vcpu fds, and inject
> an interrupt.

Good catch. Will fix.

Thanks Avi,
-Greg


Attachment: signature.asc
Description: OpenPGP digital signature